错误在程序中迷失'#'

Abr*_*ile 6 c++ macros g++ c-preprocessor

我想根据是否-std=c++0x使用来定义一个宏.如果我尝试下面的宏我有错误error stray '#' in program.

下面的代码是否错误/是否允许C++ #if / #endif 在a中使用预处理器#define

   #define DEF_ME (p) \
   #if  __GXX_EXPERIMENTAL_CXX0X__ \
   #endif
Run Code Online (Sandbox Code Playgroud)

我在Linux中使用g ++ 4.4.7.

Kon*_*lph 9

下面是不正确的代码/是它允许C++使用预处理#if/ #endif#define

不,那是不允许的.但是您可以使用相反的方法来获得相同的结果:

#if  __GXX_EXPERIMENTAL_CXX0X__
#   define DEF_ME (p) one way
#else
#   define DEF_ME (p) another way
#endif
Run Code Online (Sandbox Code Playgroud)