更改const原语仅生成警告

时间:2012-01-17 20:11:36

标签: c const standards

我正在使用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”

2 个答案:

答案 0 :(得分:4)

“标准是否说这只是警告?”

该标准不区分警告和错误。该标准仅包含诊断消息。

const int i = 512;
i = 200;

在此程序中,赋值运算符存在约束违规。实现必须发出诊断消息。然后编译器可以继续自由地翻译该程序。但是违反约束的程序不是C程序。

答案 1 :(得分:3)

gcc 2.95是古代。它有许多已在更新版本中修复的错误。

您最好的选择是升级到更新版本的gcc。