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

时间:2012-06-13 13:26:08

标签: c++ visual-studio visual-c++ c-preprocessor compiler-directives

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

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

#if FALSE
     cout << "false" << endl;
#endif

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

3 个答案:

答案 0 :(得分:5)

预处理器将包含/排除#if #endif块的内容,具体取决于#if评估为真或假后的表达式。

#if TRUE只会在

时评估为真
  • 定义了宏TRUE
  • TRUE!= 0
  • 的值

在您的示例中,既未定义TRUE也未FALSE,因此两个块均为false并被排除。

答案 1 :(得分:4)

Windows中的

TRUEFALSE,但在WinDef.h中声明。

如果您添加标题,则会看到TRUE1FALSE0。所以,第一个语句应该执行,第二个语句不应该执行。

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

答案 2 :(得分:0)

要查看打印的truefalse,您需要定义它们:

#define TRUE 1
#define FALSE 1

现在#if TRUE#if FALSE将与#if 1相同。