用defined(X)定义一个宏

e27*_*314 2 c++ c-preprocessor

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

#define GET_X(x) (defined(X_DEFINED) ? DEFAULT_X : x)
Run Code Online (Sandbox Code Playgroud)

它无法编译,并显示错误

error: 'X_DEFINED' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

有什么建议么?我希望能够根据是否X_DEFINED已定义在参数和全局变量之间进行选择

Hol*_*Cat 10

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

您想要这样的东西:

#ifdef X_DEFINED
#define GET_X(x) DEFAULT_X
#else
#define GET_X(x) x
#endif
Run Code Online (Sandbox Code Playgroud)