我正在使用Dev-C ++ v4.9.8.0并编写了行
const int i = 512;
i = 200;
当我去编译时,我希望看到一个编译时错误,但只有一个警告。我告诉Dev-C ++我想将它编译成C程序。我的编译器是MinGW gcc v2.95,所有这些都在Windows 7机器上运行。我认为当程序试图更改用const
限定符声明的值时,生成编译时错误是一种语言标准。标准是否说这只是警告?
这是我的计划:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const int i = 512;
i = 250;
system("PAUSE");
return 0;
}
这是编译日志:
7 C:\ C_Programs \ Practice \ main.c [警告]赋予只读变量“i”
答案 0 :(得分:4)
“标准是否说这只是警告?”
该标准不区分警告和错误。该标准仅包含诊断消息。
const int i = 512;
i = 200;
在此程序中,赋值运算符存在约束违规。实现必须发出诊断消息。然后编译器可以继续自由地翻译该程序。但是违反约束的程序不是C程序。
答案 1 :(得分:3)
gcc 2.95是古代。它有许多已在更新版本中修复的错误。
您最好的选择是升级到更新版本的gcc。