COMを使用する場合、ブール値はwtypes.hで次のように宣言されているVARIANT_BOOLとして渡されます。短い定義済みの値もあります真実そして間違い:
#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)
VARIANT_BOOL から C++ 型に変換する最適な方法はどれですかbool
? 明らかなバリアントは次のとおりです。
VARIANT_FALSEと比較する
単にboolにキャストする
他の方法は簡単に発明できます。
これを行う最良の方法はどれでしょうか。最も読みやすく、最も標準に準拠しており、偶発的なバグの発生が最も少なく、64 ビット プラットフォームへの移植で問題が発生する可能性が最も低い方法は何でしょうか。
ベストアンサー1
と比較してください。世の中には、 を期待する関数に誤って C++ bool 値 (整数値 1 にキャスト)VARIANT_FALSE
を渡すバグのあるコードが多数あります。 と比較すると、正しい期待値が得られます。true
VARIANT_BOOL
VARIANT_FALSE