如何检查函数式宏是否已定义?

6
我的代码中有一行看起来像这样的内容:
#ifndef MACRO(n)

这在大多数编译器上实际上可以正常工作。然而,在Solaris上会失败,因为官方语法是 # ifndef 标识符 换行 组选项 ,不能在标识符中使用括号。

那么正确的方法是如何检查是否定义了这个宏?


澄清一下。您已经知道如何通过 ifdef MACRO 检查它是否被定义。您想特别知道它是否是一个函数宏吗? - Aaron McDaid
1个回答

8
您不需要使用(n),实际上如果您使用它,gcc会抱怨:
warning: extra tokens at end of #ifndef directive

这是因为#ifndef期望一个标识符而不是表达式,预处理器可能会忽略(n)。只需检查宏定义名称即可满足要求。
#ifndef MACRO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接