-7

昨日、次の質問をしました:エラー C2059: 構文エラー '定数' [複製]

コードは次のとおりです。

enum {false,true};
typedef char bool;

エラーが発生する理由はわかりましたが、問題の解決策はありません。どんなアイデアでも大歓迎です。

4

2 に答える 2

2

この 2 行を削除するだけです。これらは C++ のキーワードであるため、を使用するbooltrueまたは引き続きコンパイルされるコード。false

bool唯一の問題は、この型が他の値を格納できることに悪意のあるコードが依存している場合です。しかし、そのようなコードは間違いなく間違いです。

于 2013-09-05T08:58:42.887 に答える
1

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>代わりに単にインクルードしてください。

于 2013-09-05T08:55:48.277 に答える