簡體   English   中英

BOOL和bool之間的區別和優勢

[英]difference and advantages between BOOL and bool

我一直在玩一些返回BOOL的函數。 我知道如何使用它們,但是BOOL和bool有什么區別? 我還查看了DirectX的一些示例代碼,他們將其用作int嗎? 使用int,bool或BOOL有優勢嗎? 我的主要問題是我應該使用哪個?

BOOL是Windows特定的類型名稱。 這是inttypedef (別名)。

從歷史上看,它可能是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通常是本機字)。 因此,就最大速度的微優化而言,等於intBOOL比等於字節的bool更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM