将宏函数定义为(0)是什么意思?

时间:2018-09-07 05:02:25

标签: c macros c-preprocessor

我在某些源代码中看到了这种定义

#define somemacro(a,b,c) (0)

我看到的是相同的源代码:

#define anothermacro(a,b,c) (1)

任何机构都可以解释这种宏定义吗?这样定义的目的是什么?

1 个答案:

答案 0 :(得分:2)

在以下情况下,通常会出现诸如宏之类的函数的未使用参数:

error

如果没有定义A_IS_GREAT_ALWAYS,则没有参数将在以下类型的位置中断构建。

err

预编译器将示例代码转换为:

#ifdef A_IS_GREAT_ALWAYS
  #define anothermacro(a,b,c) (1)
#else
  #define anothermacro(a,b,c) ((a)>(b)+(c))
#endif

...
if (anothermacro(foo, bar, baz))
...

取决于是否定义了A_IS_GREAT_ALWAYS。