0

私はかなり古いコードベースで作業していますが、それはすべてC99より前のものです。したがって、boolタイプはなく、BOOLEAN列挙型があります。私は若い銃なので、VS 2010が好きですが、古いコードベースでは特にうまく機能していません。インラインエラーハイライトを行うためにMSVC2010を使用していると思います。また、MSVC2010はC99標準に準拠していると思います。これについては間違っている可能性がありますが、いずれの場合も、ブール式でBOOLEAN変数を割り当てると「エラー」が強調表示されます。簡単な例を挙げましょう。

typedef enum boolean_tag {FALSE, TRUE} BOOLEAN;
BOOLEAN test = FALSE;
test = 1 == 1;

VS2010エディターでは、=はエラーで強調表示され、マウスオーバーすると、タイプの値をタイプboolのエンティティに割り当てることができないことに注意してくださいBOOLEAN。pre-C99にはの概念がないためbool、これは単に列挙値の割り当てであり、エラーではありません。

だから、私の質問は:VS2010にC99以前の構文/エラーチェックを使用するように指示する方法はありますか?または、これは一筋縄ではいきませんが、これらの関数に別のコンパイラを完全に使用していますか?

ありがとう。

編集:MSVC2010の仮定を修正

4

1 に答える 1

3

考慮すべきいくつかの事柄:

  • VisualStudioはC++コンパイラであるため、厳密に準拠したCプログラムのコンパイルには理想的ではありません。
  • Visual Studioは、C標準のどのバージョンにも適合していません。それは確かにC99標準に準拠または実装していません。
  • C ++では、式は型のと1 == 1評価されます。truebool
  • Cでは、標準の任意のバージョンがタイプ1 == 1の値に評価されます。1int

Visual Studioは、ブール値を列挙型に格納しようとしているために文句を言います。これは、やや強い型付けの言語であるC++では適切ではありません。C言語では、そのような制限はありません。

あなたの質問に対する答えは次のとおりです。別のプログラミング言語用のコンパイラでCプログラムをコンパイルしようとすると、これらの問題が発生します。

于 2013-02-25T15:10:10.073 に答える