使用像#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,内部语句会自动显示为灰色。
答案 0 :(得分:5)
预处理器将包含/排除#if #endif
块的内容,具体取决于#if
评估为真或假后的表达式。
#if TRUE
只会在
TRUE
TRUE
!= 0 在您的示例中,既未定义TRUE
也未FALSE
,因此两个块均为false并被排除。
答案 1 :(得分:4)
TRUE
和FALSE
为宏,但在WinDef.h
中声明。
如果您添加标题,则会看到TRUE
为1
且FALSE
为0
。所以,第一个语句应该执行,第二个语句不应该执行。
如果不包含标题,则两者都将是未定义的,并且两个语句都不会被执行。
答案 2 :(得分:0)
要查看打印的true
或false
,您需要定义它们:
#define TRUE 1
#define FALSE 1
现在#if TRUE
和#if FALSE
将与#if 1
相同。