如何检查是否定义了类函数宏?
How to check if a function-like macro is defined?
我的代码中有一行看起来像这样:
#ifndef MACRO(n)
这实际上在大多数编译器上都能正常工作。但是,这在 Solaris 上失败了,因为官方语法是 # ifndef identifier new-line groupopt
并且标识符中不允许使用括号。
检查这个宏是否被定义的正确方法是什么?
你不需要(n)
,实际上如果你使用它 gcc 会报错:
warning: extra tokens at end of #ifndef directive
这是因为 #ifndef
需要一个标识符而不是表达式,(n)
可能被预处理器忽略
只需检查宏定义名称就可以了:
#ifndef MACRO
我的代码中有一行看起来像这样:
#ifndef MACRO(n)
这实际上在大多数编译器上都能正常工作。但是,这在 Solaris 上失败了,因为官方语法是 # ifndef identifier new-line groupopt
并且标识符中不允许使用括号。
检查这个宏是否被定义的正确方法是什么?
你不需要(n)
,实际上如果你使用它 gcc 会报错:
warning: extra tokens at end of #ifndef directive
这是因为 #ifndef
需要一个标识符而不是表达式,(n)
可能被预处理器忽略
只需检查宏定义名称就可以了:
#ifndef MACRO