BOOL和bool之间的区别和优势

时间:2014-04-16 01:24:50

标签: c++ boolean

我一直在玩一些返回BOOL的函数。我知道如何使用它们但是BOOL和bool之间的区别是什么?我还查看了一些来自directX的示例代码,他们将它用作int?使用int,bool还是BOOL有什么好处?我的主要问题是我应该使用哪个?

4 个答案:

答案 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