mer*_*011 3 c++ macros c-preprocessor
我想定义一个宏,它可以将另一个宏作为参数,如果未定义则返回0,如果是,则返回1
预处理器有一个被调用的运算符defined,它正是这样做的,但它仅在#if指令中可用.我想知道我是否可以在某种程度上暴露这个功能#if,例如在C++代码行的中间.
这通常是可能的,如果是这样,怎么样?
据我所知,你想要下面的东西,不幸的是不可能:
#define IS_DEFINED_MACRO(X) #ifdef(X) 1 #else 0 #endif // IMPOSSIBlE!
int x = IS_DEFINED_MACRO(MACRO_TO_TEST);
Run Code Online (Sandbox Code Playgroud)
唯一可行的方法是
#ifdef MACRO_TO_TEST
#define IT_IS_DEFINED 1
#else
#define IT_IS_DEFINED 0
#endif
Run Code Online (Sandbox Code Playgroud)