2017-01-14 25 views
2

私はC言語に新しく、次のコードをC言語でコンパイルしようとしたときにエラーが発生するのを理解するのに苦労しています。エラーエラーメッセージC言語での変数宣言

void f(void) { 
    int i; 
    i = 6; 
    int j; 
    j = 20; 
} 
+2

標準Cでは、実行可能なステートメントの前にすべての変数を宣言する必要があります。したがって、 'j'は' i = 6; 'の前に宣言されなければなりません。 – DyZ

+2

[これは正常にコンパイルされます](http://ideone.com/HbMeQI)。 – dasblinkenlight

+3

@DYZ C標準の古い*変種。 「現代の」C(C99のように、おそらく以前は?)はそれを必要としません。 –

答えて

4

すべての宣言は、関数の先頭になければなりません。 C99のような後のバージョンでは、C宣言はコードのどこにでも置くことができます。あなたは古いコンパイラを持っていると思います。

0
問題はいくつかの古いコンパイラのためにあなたが任意の実行文の前に変数を宣言する必要があるということです

void f(void) { 
    int i; 
    int j; 
    i = 6; 
    j = 20; 
} 

にコードを変更し

。この問題が発生しないようにするには、新しいコンパイラに切り替えます。

0

コンパイラがc98の後でcコードをコンパイルするように設定されている場合、このエラーが発生します。これは、c98の標準に従って、変数のデカルーションが最初に行われなければならないからです。コードの

しかし、標準のc99に従ってコードをコンパイルするオプションを選択することができます。この場合、コードの途中で変数のデクラレーションを行うことができます。