6
未聲明的變量的抱怨我使用相同的源文件中定義爲宏:編譯器在宏
#define MY_MACRO (a, b,...) (...)
宏被在文件中以後使用。
然而,編譯器會抱怨:
錯誤:一個未申報(在此函數第一次使用)。
這真的很奇怪..我錯過了一些明顯的東西?
未聲明的變量的抱怨我使用相同的源文件中定義爲宏:編譯器在宏
#define MY_MACRO (a, b,...) (...)
宏被在文件中以後使用。
然而,編譯器會抱怨:
錯誤:一個未申報(在此函數第一次使用)。
這真的很奇怪..我錯過了一些明顯的東西?
我認爲問題是在MY_MACRO
和(a, b, ...)
之間有一個空格。它應該是這樣的:
#define MY_MACRO(a, b,...) (...)
刪除宏名稱和參數列表之間的空格。空格將宏頭與主體分開,因此它被視爲一個沒有參數的宏,它擴展到期望的參數列表,然後是所需的主體。
請顯示一個簡單的例子。 – 2501 2014-11-02 16:36:10
如果您想要一個函數宏,參數列表的括號必須立即跟隨宏名稱,而沒有空格。因爲你已經定義了一個簡單的替換,其中'MY_MACRO'被擴展爲'(a,b,...)(...)',這可能不是你想要的。你可以用一個開關gcc中的'-E')顯示預處理輸出以幫助您跟蹤這些問題。 – 2014-11-02 16:36:34
@Meehm:就是這樣!謝謝! – Iceman 2014-11-02 16:39:02