当我(意外地)使用类型布尔值时,为什么Visual C ++ 2008不会抱怨

时间:2014-02-27 10:41:04

标签: c++ visual-studio-2008

我一直在做一些Java工作,所以错误地在cpp文件中创建了这样的函数:

inline boolean is_whatever() const { return type_ == whatever; }

编译得很好。

然后,当我在UNIX上编译相同的代码时,它失败了:

error: `boolean' does not name a type

VS为什么不抱怨?

我可以设置一个标志来防止这种松弛吗?

3 个答案:

答案 0 :(得分:1)

使用bool而不是boolean,你会避免这样的不便。

答案 1 :(得分:1)

恰好在您(直接或间接)包含的其他标题中定义了boolean。例如,如果你包含windows.h,则会引入许多其他标题,其中一些标题包含:{/ p>

typedef unsigned char boolean;

如果您的cpp文件中包含任何这些标头,则boolean将成为命名空间的一部分。如果要在Windows API中“修复”,那么数以千计的遗留项目将不再编译,开发人员将会陷入困境。它的使用可能追溯到bool是C ++中的具体类型之前(请记住,Windows API是C,而不是C ++)

答案 2 :(得分:0)

boolean不是C ++类型。也许某个地方有typedef bool boolean,但它不是内置类型。

改为使用bool