0

我正在使用 Visual Studio 2005 C++ 编译器(但使用 C89 类型 ANSI C 进行编码)并且无法定义要使用的“true”和“false”关键字,如下所示:

#define true 1
#define false 0

我已经使用 Green Hills C++ 编译器成功地使用了这个确切的代码,但是 Visual Studio 的行为就像“true”和“false”已经是关键字一样。这是真的?我可以用我自己的定义覆盖它们吗?如果可以,如何?

通过使用上面的行,我在编译过程中遇到 C2143 错误,例如:

someFuntion(someVar,otherVar,true);

我已经确定其他类型与函数定义匹配,如果我将 true 更改为“1”或“0x1”,错误就会消失。

4

1 回答 1

1

首先,true并且false永远不是 C 关键字,即使在 C99/C11 中也是如此。C99 引入了本机布尔类型_Bool,但仍然只是宏true,分别定义在false10stdbool.h

没有参考 Visual Studio 定义宏trueor false,但您始终可以使用它:

#ifndef true
#define true 1
#endif
#ifndef false
#define false 0
#endif
于 2013-07-26T18:54:56.693 回答