预处理器检查已定义

Max*_*rai 2 c++ c-preprocessor

我可以检查预定义值,如:

#ifdef SOME_VAR
  // Do something
#elif
  // Do something 2
#endif
Run Code Online (Sandbox Code Playgroud)

如果我必须检查2个值而不是1.是否有任何运算符:

#ifdef SOME_VAR and SOME_VAR2
  // ...
#endif
Run Code Online (Sandbox Code Playgroud)

或者我必须写:

#ifdef SOME_VAR
   #ifdef SOME_VAR2
      // At least! Do something
   #endif
#endif
Run Code Online (Sandbox Code Playgroud)

Mar*_*off 6

标准短路 operator(&&)以及defined关键字是在这种情况下使用的.

#if defined(SOME_VAR) && defined(SOME_VAR2)
    /* ... */
#endif
Run Code Online (Sandbox Code Playgroud)

同样,normal not operator(!)用于否定:

#if defined(SOME_VAR) && !defined(SOME_OTHER_VAR)
    /* ... */
#endif
Run Code Online (Sandbox Code Playgroud)

  • 值得指出的是`&&`不适用于`#ifdef`,你必须使用`#if`和`defined()`:-) (3认同)