如何检查是否定义了类似函数的宏

How to check if a function-like macro is defined?

本文关键字:函数 定义 是否 何检查 检查      更新时间:2023-10-16

我的代码中有一行看起来像这样:

#ifndef MACRO(n)

这实际上在大多数编译器上都很好用。但是,这在Solaris上失败了,因为官方语法是# ifndef identifier new-line groupopt,标识符中不允许使用括号。

检查此宏是否已定义的正确方法是什么?

您不需要(n),实际上如果您使用它,gcc会抱怨:

warning: extra tokens at end of #ifndef directive

这是因为#ifndef期望一个标识符而不是表达式,(n)可能被预处理器忽略

只需使用宏定义名称进行检查就足够了:

#ifndef MACRO