我一直在做一些 Java 工作,所以错误地在 cpp 文件中创建了这样一个函数:
inline boolean is_whatever() const { return type_ == whatever; }
它编译得很好。
然后,当我在 UNIX 上编译相同的代码时,它失败了:
error: `boolean' does not name a type
为什么 VS 不报错?
我可以设置一个标志来防止这种松懈吗?
最佳答案
碰巧 boolean
已在您包含(直接或间接)的其他一些 header 中定义。例如,如果您包含 windows.h
,则会引入许多其他 header ,其中一些 header 具有以下内容:
typedef unsigned char boolean;
如果这些 header 中的任何一个包含在您的 cpp 文件中,则 boolean
将成为命名空间的一部分。如果这在 Windows API 中被“修复”,那么数以千计的遗留项目将不再编译,开发人员将奋起反抗。它的使用可能可以追溯到 bool
成为 C++ 中的具体类型之前(还要记住 Windows API 是 C,而不是 C++)
关于c++ - 为什么当我(不小心)使用 bool 类型时 Visual C++ 2008 不报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22066007/