我的代码中有一行看起来像这样的内容:
#ifndef MACRO(n)
这在大多数编译器上实际上可以正常工作。然而,在Solaris上会失败,因为官方语法是 # ifndef 标识符 换行 组选项
,不能在标识符中使用括号。
那么正确的方法是如何检查是否定义了这个宏?
#ifndef MACRO(n)
这在大多数编译器上实际上可以正常工作。然而,在Solaris上会失败,因为官方语法是 # ifndef 标识符 换行 组选项
,不能在标识符中使用括号。
那么正确的方法是如何检查是否定义了这个宏?
(n)
,实际上如果您使用它,gcc会抱怨:warning: extra tokens at end of #ifndef directive
#ifndef
期望一个标识符而不是表达式,预处理器可能会忽略(n)
。只需检查宏定义名称即可满足要求。#ifndef MACRO
ifdef MACRO
检查它是否被定义。您想特别知道它是否是一个函数宏吗? - Aaron McDaid