编译器在宏中抱怨未声明的变量

Ice*_*man 7 c

我正在使用在同一源文件中定义的宏:

#define MY_MACRO (a, b,...) (...)
Run Code Online (Sandbox Code Playgroud)

该宏稍后在文件中使用.

但是,编译器抱怨:

错误:未声明(首次使用此功能).

这真的很奇怪..我错过了一些明显的东西吗?

小智 13

我认为问题在于MY_MACRO和之间存在空间(a, b, ...).它应该是这样的:

#define MY_MACRO(a, b,...) (...)
Run Code Online (Sandbox Code Playgroud)


pat*_*pat 5

删除宏名称和参数列表之间的空格.空间将宏头与主体分开,因此它被视为一个宏,没有参数扩展到所需的参数列表,后跟所需的主体.