2012-01-17 9 views
1

私はのDev-C++ v4.9.8.0を使用していると私はライン変更のconstプリミティブのみ生成する警告

const int i = 512; 
i = 200; 

を書いて、私はコンパイルに行ったとき、私はコンパイル時エラーを確認すると予想、ただ警告を得ました。私はDev-C++に、これをCプログラムにコンパイルしたいと言った。フードの下の私のコンパイラは、MinGW gcc v2.95です。これらはすべてWindows 7マシンで動作します。プログラムがconst修飾子で宣言された値を変更しようとすると、コンパイル時エラーを生成する言語標準だと思っていました。スタンダードは、これは警告のみを保証すると言いますか?ここで

は私のプログラムです:

7 C:: `i」は

読み取り専用変数の\ C_Programs \練習\ main.cの [警告]割り当て

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]) 
{ 
    const int i = 512; 
    i = 250; 

    system("PAUSE"); 
    return 0; 
} 

そしてここでは、コンパイルログです

+7

gcc 2.95は_ancient_です。 –

+1

@JamesMcNellis:うわー、そうです。 13歳:http://gcc.gnu.org/releases.html –

+0

v4.5.2を使用しています(James McNellisのコメントにあるコメントを参照)。 – mring

答えて

4

"標準では警告のみが必要ですか?

標準では、警告とエラーを区別しません。標準は診断メッセージのみを持っています。

const int i = 512; 
i = 200; 

このプログラムでは、代入演算子に制約違反があります。実装は診断メッセージを発行する必要があります。コンパイラはこのプログラムを翻訳し続けます。しかし、制約違反のプログラムはCプログラムではありません。

3

gcc2.95は、古代である。最近のバージョンでは多くのバグが修正されています。

もっと新しいバージョンのgccにアップグレードすることをお勧めします。

+0

ありがとうございます。私はgccとg ++のv4.5.2をgccとg ++のDev-C++が使用している(私はこのDev-C++をGoodwillの本で手に入れました)のが2.9.5バージョンであることに気づきました。設定が完了しました。 – mring

+0

Dev-C++のマイコンパイラ設定を実際に4.5.2コンパイラを使用するように変更しましたが、まだエラーが発生せず、警告のみが表示されます。 – mring

関連する問題