0

Visual Studio 2005 C ++コンパイラを使用しています(ただし、C89タイプANSI Cを使用してコーディングしています)が、次のように使用する「true」および「false」キーワードを定義できません。

#define true 1
#define false 0

Green Hills C ++コンパイラを使用してこの正確なコードを正常に使用しましたが、VisualStudioは「true」と「false」がすでにキーワードであるかのように動作します。これは本当ですか?それらを自分の定義でオーバーライドできますか?もしそうなら、どのように?

上記の行を使用すると、次のような行のコンパイル中にC2143エラーが発生します。

someFuntion(someVar,otherVar,true);

他のタイプが関数定義と一致することをすでに確認しました。trueを「1」または「0x1」に変更すると、エラーはなくなります。

4

1 に答える 1

1

まず、 C99 / C11でも、Cキーワードではtrueありfalseません。C99はネイティブブール型を導入しまし_Boolたがtrue、それでもそれぞれfalseのマクロで1あり、0stdbool.h

Visual Studioがマクロtrueまたはfalseを定義するという参照はありませんが、いつでもこれを使用できます。

#ifndef true
#define true 1
#endif
#ifndef false
#define false 0
#endif
于 2013-07-26T18:54:56.693 に答える