【发布时间】:2012-08-24 07:19:47
【问题描述】:
我可以在 gcc 中更改 const 修改变量的值,但不能在其他编译器中更改。
我在 gcc 上尝试过这段代码,它更新了 i 和 j (11) 的值。使用an online compiler,我得到不同的值。
#include<stdio.h>
void main() {
const int i=10;
int *j;
j = &i;
(*j)++;
printf("address of j is %p address of i is %p\n",j,&i);
printf("i is %d and j is %d\n",i,*j);
}
【问题讨论】:
-
那是实际代码吗? IIRC 'j = &i' 实际上不应该编译。
-
@TomTanner:这是违反约束的,需要诊断。就标准而言,非致命警告就足够了。
-
这和问“我买了一张单程票,我怎么用这张票回家?”是一回事。致电任何一家航空公司并询问该问题,然后您将得到同样适用于您的编程问题的答案。
-
@Lundin:太好了。另一家将我列入黑名单的公司。谢谢!
-
-pedantic-errors和 gcc 不会让您编译标准要求诊断的东西,包括void main。