【问题标题】:Macro with arguments used in a return statement带有在 return 语句中使用的参数的宏
【发布时间】:2011-01-28 21:34:00
【问题描述】:

我对以下 c 代码感到困惑

#define MACRO (xx) \
foo(xx)
...    
#ifdef A
return MACRO(a);
#endif
...

源无法编译。但是当我将定义更改为

#define MACRO \
foo(a)

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

【问题讨论】:

    标签: c programming-languages c-preprocessor


    【解决方案1】:

    删除MACRO(xx) 之间的空格。

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

    【讨论】:

    • @R.. @mathk 我算不算“孩子”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2017-04-19
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多