[英]difference and advantages between BOOL and bool
我一直在玩一些返回BOOL的函數。 我知道如何使用它們,但是BOOL和bool有什么區別? 我還查看了DirectX的一些示例代碼,他們將其用作int嗎? 使用int,bool或BOOL有優勢嗎? 我的主要問題是我應該使用哪個?
BOOL
是Windows特定的類型名稱。 這是int
的typedef
(別名)。
從歷史上看,它可能是Microsoft在將內置bool
類型添加到C ++之前發明的。
對於不需要與Windows API通信的任何新代碼,只需使用bool
。
僅將BOOL
用於必須符合Windows API的代碼。
(如果Windows API是今天從頭開始編寫的,則大概會使用C ++的內置bool
類型而不是發明自己的類型BOOL
是歷史的遺跡。)
為了獲得最佳的類型安全性,在新代碼中,應將bool用作布爾值。 如果您使用BOOL之類的接口,則通常可以使用自動類型轉換,但否則,您將BOOL視為由布爾值表示的傳統整數。
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的這篇文章 。
大多數編譯器會將bool
的大小bool
1字節,而int
的大小通常為4字節。 如果在這種情況下將bool
用於緊密堆積的結構,則可以節省空間。
現在,從理論上講,移動和int
快於移動字節( int
通常是本機字)。 因此,就最大速度的微優化而言,等於int
的BOOL
比等於字節的bool
更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.