错误在程序中迷失'#'

时间:2014-02-10 10:00:39

标签: c++ macros g++ c-preprocessor

我想根据是否使用-std=c++0x来定义宏。 如果我尝试下面的宏,我会收到错误error stray '#' in program

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

   #define DEF_ME (p) \
   #if  __GXX_EXPERIMENTAL_CXX0X__ \
   #endif

我在Linux中使用g ++ 4.4.7。

1 个答案:

答案 0 :(得分:9)

  

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

不,那是不允许的。但你可以用相反的方法得到相同的结果:

#if  __GXX_EXPERIMENTAL_CXX0X__
#   define DEF_ME (p) one way
#else
#   define DEF_ME (p) another way
#endif