C++ 移行ガイド

ブール型

ブール型 (booltruefalse) は、コンパイラで bool キーワードの認識が有効になっているかどうかによって制御されます。

互換モードでは、キーワードを有効にすることをお勧めします。これは、コード中でキーワードが現在どのように使用されているか明らかになるためです (注:既存のコードで使用されているブール型の定義に互換性があるとしても、実際の型が異なるため、名前の符号化に影響が生じます。その場合は、関数のパラメータにブール型を使用して、古いコードをすべて再コンパイルする必要があります)。

標準モードで bool キーワードを無効にすることは、お勧めしません。これは、C++ の標準ライブラリが、 bool 型に依存しているためです。後で bool を有効にすると、名前の符号化などのことで、さらに問題が生じます。

bool キーワードが有効な場合、コンパイラは、あらかじめ _BOOL マクロを 1 に定義します。キーワードが無効な場合、このマクロは定義されません。次に例を示します。


// 互換性のあるブール型の定義
#if !defined(_BOOL) && !defined(BOOL_TYPE)
    #define BOOL_TYPE           // 局所インクルード対策
    typedef unsigned char bool; // 標準モードでは、boolは1バイトを使用
    const bool true = 1;
    const bool false = 0;
#endif

互換モードでは、新しい組み込み型の bool 型とまったく同じように動作するブール型を定義することはできません。組み込み型の bool 型が C++ に追加されているのは、このためです。