2008-11-05 76 views
4

我是在通過這個結構鑄造C++布爾到Windows API BOOL安全如何將BOOL投射到BOOL?

bool mybool = true; 
BOOL apiboolean = mybool ? TRUE : FALSE; 

我想這是一個肯定,因爲我沒有看到任何明顯的問題,但我想花點時間只問,因爲這可能比看起來更微妙。

感謝迪瑪(輕輕地)以我原本措辭的方式指出我的粗心。

回答

10

你的意思


bool b; 
... 
BOOL apiboolean = b ? TRUE : FALSE; 

如果是這樣,那麼,這將工作。

+0

Duh。對不起 - 你當然是對的。謝謝。我會解決我的問題。 – 2008-11-05 19:46:09

3

是的,這將工作,但

bool b; 
... 
BOOL apiboolean = (BOOL) b; 

應該工作一樣好,一樣相反:

bool bb = (bool) apiboolean; 
+0

在這種情況下,您應該使用static_cast (b)。 – Dima 2008-11-05 20:25:16

1

的Visual Studio 2005將簡單地接受:

bool b = true; 
BOOL apiboolean = b; 

不需要鑄造

請注意,BOOL-> bool的其他方法不會像這樣工作。