Visual C++のエラー 傾向と対策

Visual C++での開発中に遭遇するエラーについて、そのよくある原因と対策とを収集するブログです

error C2143の傾向と対策:変数の定義位置がおかしいかも

Cプログラムを書いているとしょっちゅうC2143エラーに遭遇します。

error C2143: 構文エラー : ';' が '型' の前にありません。

一番多い原因は、おそらく変数の定義位置がブロック先頭にないことだと思います。

int main(void){
    int a = 0;
    ++a;
    int b = 0; // C2143: 定義位置がブロック先頭ではない

    return 0;
}

エラーを取り除くためには以下のように書かないといけません。

int main(void){
    int a = 0;
    int b = 0;
    ++a;

    return 0;
}

これはVisual Studio 2012以前のVC++コンパイラがC99規格に完全対応していなかったのが原因です。Visual Studio 2013ではC99への対応が進んだらしく、冒頭のコードでC2143エラーは発生しません。