我的代码中有一行如下所示:
#ifndef MACRO(n)
这实际上适用于大多数编译器。但是,这在Solaris上失败,因为官方语法为# ifndef identifier new-line groupopt
,并且标识符中不允许使用括号。
检查此宏是否已定义的正确方法是什么?
答案 0 :(得分:8)
你不需要(n)
,如果你使用它,gcc会抱怨:
warning: extra tokens at end of #ifndef directive
这是因为#ifndef
期望标识符不是表达式,(n)
可能被预处理器忽略
只需检查宏定义名称就足够了:
#ifndef MACRO