c++ - 用 defined(X) 定义一个宏

标签 c++ c-preprocessor

这是我要使用的宏,如果定义了 X_DEFINED,它将被评估为 DEFAULT_X,否则它将被评估为 x

#define GET_X(x) (defined(X_DEFINED) ? DEFAULT_X : x)

编译失败,报错

error: 'X_DEFINED' was not declared in this scope

有什么建议吗?我希望能够根据是否定义了 X_DEFINED

在参数和全局变量之间进行选择

最佳答案

defined() 仅适用于 #if 和类似的预处理器指令。

你想要这样的东西:

#ifdef X_DEFINED
#define GET_X(x) DEFAULT_X
#else
#define GET_X(x) x
#endif

关于c++ - 用 defined(X) 定义一个宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56043930/

相关文章:

c++ - MFC中改变按钮大小的方法

c++ - std::unique_ptr::reset 和构造函数异常

macros - 没有参数的预处理器宏和零参数的预处理器宏之间有什么区别

c++ - 在 C++ 中使用 "#define"的替代方案?为什么会被人嫌弃?

c - 函数或宏定义使用哪一个

c - #定义 PARTS_COLUMN "| %-16s | %-50s |\n"

c++ - 我可以使用 C 套接字而不包含 <sys/socket.h> 吗?

c++ - QGraphicsItem 中出现奇怪的 "incomplete type"错误

c++ - 在 openacc 中为每个帮派进行递归的私有(private)数组

C宏处理