【问题标题】:Trying to assign new value to a constant尝试为常量分配新值
【发布时间】:2010-12-31 15:36:13
【问题描述】:

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

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

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

【问题讨论】:

  • 只是出于好奇,您是如何发现您的模块是基于 C89 的?
  • 能否出示一下代码?

标签: c constants c89


【解决方案1】:

C89 和 C99 似乎都生成了一个 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 同意gcchere。

【讨论】:

  • 我不确定我是否为此使用了正确的代码,但可能是使用了指针之类的东西
【解决方案2】:

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

[题外话] 但是,我没有得到完整的 C89 标准草案。谁知道哪里可以下载?

【讨论】:

  • 我其实没有TC编译器,如果你有就编译这段代码:ideone.com/x8lXL
  • 不,我也没有TC :)...等待有人更新TC编译结果
猜你喜欢
  • 2020-10-27
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
相关资源
最近更新 更多