#include<stdio.h>
int main()
{
int const x = 5;
int *y;
printf("x = %d \n",x);
y = &x;
*y = 10;
printf("x = %d , y = %d \n",x,*y);
return(0);
}
即使数据设置为常量,常量值也会发生变化。
我已经执行了这段代码,我认为这应该会出错。因为我正在尝试更改 const 数据。
我已经执行了这段代码,我认为这应该会给出错误
它应该给出诊断消息。 C 标准没有提及警告和错误。 C 编译器发现错误时必须做什么?
它确实在我尝试过的每个编译器上给出了一个。以海湾合作委员会为例:
警告:赋值从指针目标类型中丢弃“const”限定符[-Wdiscarded-qualifiers]
这种情况下的警告并不意味着“这是一个不重要的细节,你可以在未雨绸缪时修复”,而是“这里的错误代码甚至不是有效的 C,但我决定无论如何生成一个可能有错误的可执行文件”。
质量实现 当提供无效的 C 语言时,C 编译器根本不会生成可执行文件,但大多数主流编译器并不关心质量。因此,如果您希望每次编写无效 C 时出现错误而不是警告,请查看为学习 C 的初学者推荐哪些编译器选项?