昨日、次の質問をしました:エラー C2059: 構文エラー '定数' [複製]
コードは次のとおりです。
enum {false,true};
typedef char bool;
エラーが発生する理由はわかりましたが、問題の解決策はありません。どんなアイデアでも大歓迎です。
昨日、次の質問をしました:エラー C2059: 構文エラー '定数' [複製]
コードは次のとおりです。
enum {false,true};
typedef char bool;
エラーが発生する理由はわかりましたが、問題の解決策はありません。どんなアイデアでも大歓迎です。
この 2 行を削除するだけです。これらは C++ のキーワードであるため、を使用するbool
、true
または引き続きコンパイルされるコード。false
bool
唯一の問題は、この型が他の値を格納できることに悪意のあるコードが依存している場合です。しかし、そのようなコードは間違いなく間違いです。
C++ プロジェクトと C プロジェクトの両方で同じコードを使用している場合は、コンパイラに応じてこれらの宣言を条件付きで削除する必要があります。これは、次のようなプリプロセッサで実行できます。
#if !defined(__cplusplus) && !defined(__bool_true_false_are_defined)
enum {false,true};
typedef char bool;
#endif
C++ コンパイラでコンパイルすると、プリプロセッサ マクロ__cplusplus
が定義されますが、C コンパイラでは定義されません。ブール値の型と値も定義するプリプロセッサ マクロ__bool_true_false_are_defined
を含めると、プリプロセッサ マクロが定義されます。<stdbool.h>
実際、独自の宣言をまったく行わないことをお勧めしますが、C++ コンパイラでコンパイルしていない場合は、<stdbool.h>
代わりに単にインクルードしてください。