我一直在做一些Java工作,所以错误地在cpp文件中创建了这样的函数:
inline boolean is_whatever() const { return type_ == whatever; }
编译得很好。
然后,当我在UNIX上编译相同的代码时,它失败了:
error: `boolean' does not name a type
VS为什么不抱怨?
我可以设置一个标志来防止这种松弛吗?
答案 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
。