C 返回语句中使用参数的宏

C 返回语句中使用参数的宏,c,programming-languages,c-preprocessor,C,Programming Languages,C Preprocessor,我对下面的c代码感到困惑 #define MACRO (xx) \ foo(xx) ... #ifdef A return MACRO(a); #endif ... 源代码无法编译。但当我把定义改为 #define MACRO \ foo(a) 所以,如果我想在这种情况下使用带参数的宏,我应该怎么做?谢谢..删除宏和(xx)之间的空格 如果将空格保留在那里,预处理器不会将(xx)视为参数,而是将其视为扩展的一部分。因此,每当它看到宏,它就会用(xx)foo(xx)替换它删除宏和(xx

我对下面的c代码感到困惑

#define MACRO (xx) \
foo(xx)
...    
#ifdef A
return MACRO(a);
#endif
...
源代码无法编译。但当我把定义改为

#define MACRO \
foo(a)

所以,如果我想在这种情况下使用带参数的宏,我应该怎么做?谢谢..

删除
(xx)
之间的空格


如果将空格保留在那里,预处理器不会将
(xx)
视为参数,而是将其视为扩展的一部分。因此,每当它看到
,它就会用
(xx)foo(xx)
替换它

删除
(xx)
之间的空格


如果将空格保留在那里,预处理器不会将
(xx)
视为参数,而是将其视为扩展的一部分。因此,每当它看到
,它就会用
(xx)foo(xx)
替换它@mathk我算不上是个“孩子”?@R@mathk我不算是个“孩子”吗?