web-dev-qa-db-ja.com

エラーC2143:構文エラー: ';'がありません「タイプ」の前

Cのプログラミングは初めてです。このプログラムの何が問題なのか、なぜこのエラーが発生するのか教えてください:error C2143:syntax error:missing ';' 「タイプ」の前....

extern void func();

int main(int argc, char ** argv){
    func();
    int i=1;
    for(;i<=5; i++) {
        register int number = 7;
        printf("number is %d\n", number++);
    }
    getch();
}
23
eLg

私は少なくとも8年間ビジュアルを使用していませんが、Visualの限定的なCコンパイラサポートでは、コードと変数を混在させることはできません。 _int i=1;_の宣言のエラーの行は?? func();への呼び出しの上に移動してみてください

また、extern void func(void);を使用します

29
Randy Howard

Visual StudioはC89のみをサポートします。つまり、すべての変数は、関数の先頭にある他のものよりも先に宣言する必要があります。

編集:@KeithThompsonは私にもっと技術的に正確な説明を追加するように促しました(そして、本当に私のものが1つの点ではない場合は本当に正しいです)。 (変数またはその他の)すべての宣言は、ブロック内のすべてのステートメントの前になければなりません。

30
Ed S.

この:

int i=1;
for(;i<=5; i++) {

次のように慣用的に書かれるべきです:

for(int i=1; i<=5; i++) {

関数スコープでforループ変数を宣言するポイントがないためです。

1
lenik