我一直在玩一些返回BOOL的函数。我知道如何使用它们但是BOOL和bool之间的区别是什么?我还查看了一些来自directX的示例代码,他们将它用作int?使用int,bool还是BOOL有什么好处?我的主要问题是我应该使用哪个?
答案 0 :(得分:3)
BOOL
是Windows特定的类型名称;它是typedef
的{{1}}(别名)。
从历史上看,它可能是在内置int
类型添加到C ++之前由Microsoft发明的。
对于任何不必与Windows API通信的新代码,只需使用bool
。
仅将bool
用于必须符合Windows API的代码。
(如果今天从头开始编写Windows API,可能会使用C ++的内置BOOL
类型,而不是发明自己的类型。bool
是历史遗留。)
答案 1 :(得分:0)
为了获得最佳的类型安全性,在新代码中,您应该使用bool作为布尔值。如果您与BOOL之类的东西接口,自动类型转换通常适用于您,但是您只需将BOOL视为表示布尔值的遗留整数。
答案 2 :(得分:0)
Is there a advantage to using int, bool, or BOOL?
使用bool
优于BOOL
的一个好处是您可以重载bool
上的函数。
// header file
void f( int ); // ok
void f( BOOL); // ok, redeclares the same function
...
// source file
void f( int ) { /*...*/ } // ok
void f( BOOL) { /*...*/ } // error, redefinition
有关使用bool
而非BOOL
使用的原因的详情,请阅读Herb Sutter的gotw
答案 3 :(得分:0)
大多数编译器的大小为bool
1字节,而int
的大小通常为4字节。
如果在这种情况下使用bool
用于紧密打包的结构,则可以节省明显的空间。
现在,理论上,移动和int
比移动一个字节更快(int
通常是本地机器字)。因此,就最大速度的微优化而言,等于BOOL
的{{1}}优于等于一个字节的int
。