forループエラー

コーディングIDE:Microsoft Visual C ++ 6.0

次のコード:

#include 
#include 
int main()
{
    int i;
    for(i=0; i<7; i++)
    {
        int j;
        for(j=0; j<5; j++)
        {
            if(i==0 || i==6)
            {
               //print *****
                if(j<4)
                {
                    printf("*");
                }
                else if(j==4)
                {
                    printf("*\n");
                }
            }
            else
            {
                if(j==0)
                    printf("*");
                else if(j==4)
                {
                    printf("*\n");
                }
            }
        }
    }

    return 0;
}

このエラーメッセージを生成します。

error C2143: syntax error : missing ';' before 'type'

error C2065: 'i' : undeclared identifier

I just don't know the reason why it gives me this kind of error msg. It suppose to be an easy for loop - for (int i=0; i<10; i++){} but it just doesn't work and gives me this kind of error msg.

1
あなたが提供したコードには、(int i = 0; i <10; i ++)の行とコンパイル、リンク&GCCでうまく動作します。問題のある正確なコードを投稿してもよろしいですか?
追加された 著者 Johnsyweb,
@ user1145976:実際のコードを投稿するのはどうですか?
追加された 著者 Armen Tsirunyan,
VSC ++は古いですか?関数の初めに宣言が必要な場合があります。
追加された 著者 Vyktor,
どの行にエラーが表示されますか?
追加された 著者 Some programmer dude,
ループ内のイテレータ i を宣言することは C99 でサポートされていますが、VCのバージョンがサポートされていないか、 をサポートします。
追加された 著者 another.anon.coward,

1 答え

あなたのコンパイラは、一般に "C90"(あるいは時には "C89"または "ANSI-C")として知られているISO 9899:1990の古いバージョンのC標準に従っている可能性があります。

C90標準では、forループ内の変数宣言は許可されていません。すべての変数宣言は、現在のステートメントの先頭、 {の直後にしなければなりません。

さらに、C90標準では、コンパイラエラーの原因と思われる//コメントは許可されていません。

現行のC標準ISO 9899:2011( "C11")では、どこでも変数宣言が可能で、コメントも//できます。

3
追加された
今日は、Microsoft Visual Studio 6.0用のWin32コンソールアプリケーションワークスペースをセットアップし、コードをコピーして貼り付けると、うまく動作します。私はhello.cを作成していました。最初に、デフォルトのワークスペース設定を使用して、ループエラーが発生しました...これまでに何が起こっていたのかわかりません...デフォルト設定のコンパイラバージョンを確認します...ありがとう!
追加された 著者 shanwu,