26

C プログラミングは初めてです。このプログラムの問題点と、このエラーが発生する理由を教えてください:エラー C2143: 構文エラー: ';' がありません 「タイプ」の前に....

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();
}
4

3 に答える 3

34

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

編集: @KeithThompson は、より技術的に正確な説明を追加するように私に勧めました (そして、実際には、私の 1 つの点ではないところを修正するだけです)。すべての宣言 (変数またはその他のもの) は、ブロック内のすべてのステートメントより前に行う必要があります。

于 2013-03-29T04:17:48.910 に答える
29

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

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

于 2013-03-29T04:18:01.630 に答える
1

これ:

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

慣用的に次のように書く必要があります。

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

for関数スコープでループ変数を宣言する意味がないためです。

于 2013-03-29T04:17:44.887 に答える