C++,使用#if TRUE条件指令

Hie*_*eli 5 c++ compiler-directives visual-studio visual-c++ c-preprocessor

使用类似的声明时#if TRUE,我应该发生什么?非常感谢您的解释!我理解#if 1它是如何工作的,但它在我的代码中给出了完全不同的结果而不是使用#if TRUE.我理解#if是条件指令,这意味着什么; 它只是我不理解的TRUE(或FALSE)部分.似乎以这种方式使用它从不执行语句后面的代码.这是一个例子:

#if TRUE
     cout << "true" << endl;
#endif

#if FALSE
     cout << "false" << endl;
#endif
Run Code Online (Sandbox Code Playgroud)

我似乎永远不会在屏幕上看到"true"或"false",并且使用Visual Studio,内部语句会自动显示为灰色.

jos*_*efx 8

预处理器将包括/排除#if #endif块的内容,具体取决于#if评估为true或false 后的表达式.

#if TRUE 只会评估为真

  • TRUE已定义
  • TRUE=!= 0

在您的示例中既未定义TRUEFALSE未定义,因此两个块都为false并被排除.


Luc*_*ore 5

TRUEFALSE是Windows 中的,但在中声明WinDef.h

如果包含标题,则会看到TRUEis 1FALSEis 0。因此,第一个语句应该执行,第二个语句不应该执行。

如果不包括标题,则两者都将是未定义的,并且将不会执行任何语句。