我在一些源代码中看到了这种定义
#define somemacro(a,b,c) (0)
我在相同的源代码中看到:
#define anothermacro(a,b,c) (1)
任何机构都可以解释这种宏观定义吗?这种定义的目的是什么?
通常在以下情况下会出现像宏这样的函数的未使用参数:
#ifdef A_IS_GREAT_ALWAYS
#define anothermacro(a,b,c) (1)
#else
#define anothermacro(a,b,c) ((a)>(b)+(c))
#endif
如果没有参数,当未定义A_IS_GREAT_ALWAYS时,它将破坏以下类型的构建。
...
if (anothermacro(foo, bar, baz))
...
预编译器将示例代码转换为:
if ((1))
要么
if (((foo)>(bar)+(baz)))
取决于是否定义了A_IS_GREAT_ALWAYS。