试图为常量赋值

时间:2010-12-31 15:36:13

标签: c constants const c89

这是从我的模块中提取的:

在初始化后尝试为常量分配新值时,编译器会(仅)发出警告消息。

这在C99中是不正确的,但我的模块似乎是基于C89,有人可以根据C89确认此声明的有效性。

2 个答案:

答案 0 :(得分:2)

C89C99似乎都为此案例生成error,看起来是正确的,使用http://ideone.com/x8lXL中的代码;

# C89
[~]> gcc -std=c89 test.c
test.c: In function ‘main’:
test.c:5: error: assignment of read-only variable ‘A’

# C99
[~]> gcc -std=c99 test.c
test.c: In function ‘main’:
test.c:5: error: assignment of read-only variable ‘A’

另请注意,clang同意此处gcc

答案 1 :(得分:0)

我刚刚检查了C99与C89的主要区别,并且没有提及'const'关键字的变化。

[偏离主题]但是,我没有得到整个C89标准草案。有谁知道我可以从哪里下载它?