免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: maxxfire
打印 上一主题 下一主题

世界真奇妙,这个也会出错。。 [复制链接]

论坛徽章:
0
71 [报告]
发表于 2008-09-27 09:12 |只看该作者

回复 #1 maxxfire 的帖子

asshole\n");

论坛徽章:
0
72 [报告]
发表于 2008-09-27 09:19 |只看该作者

回复 #1 maxxfire 的帖子

name

论坛徽章:
0
73 [报告]
发表于 2008-09-27 16:07 |只看该作者
某些编译器是不支持用变量去初始化结构的。例如C51
int func(int a)
{
struct {int x; int y} _s = {a,a}; 这样就不行
}

论坛徽章:
0
74 [报告]
发表于 2008-09-28 11:16 |只看该作者
原帖由 liu1061 于 2008-9-25 10:24 发表
为试了一下,为什么在VC2005上没有发现大家所说的错误呢, 也没有warning infomation!


出于方便或者优化考虑,有些编译器不一定完全按标准来,更重要的是vc2005是c和c++的编译器,很多地方c和c++的标准是不一样的,
比如char *p = "aaa"在c++中是错的,在c中却可以;前面有人提到g++可以通过编译,估计g++在考虑这里时也是照顾了c++
个人猜测一个纯c的编译器是通不过编译的

论坛徽章:
0
75 [报告]
发表于 2008-09-28 11:22 |只看该作者
struct T里面是char* 是变量
"fuck"是常量
C++ 对于const很严格的

论坛徽章:
0
76 [报告]
发表于 2008-09-29 14:21 |只看该作者
还没弄明白

论坛徽章:
0
77 [报告]
发表于 2008-09-29 14:41 |只看该作者
明白了

是全局变量初始化时的先后顺序导致的问题,

指针p还未初始化就赋值给 id,然后编译出错

论坛徽章:
0
78 [报告]
发表于 2008-09-29 15:28 |只看该作者
改成这样会错不
int a;
int *p;
p=&a;

论坛徽章:
0
79 [报告]
发表于 2008-09-29 18:08 |只看该作者
我晕倒...

论坛徽章:
0
80 [报告]
发表于 2008-09-29 22:53 |只看该作者
int a;
int *p=&a;

struct T t1 = {
        "fuck",
        p
};

编译报错:
t4.c:13: error: initializer element is not constant
-----------------

报错信息里不是已经说明了吗,没有用常量进行初始化!
楼主的意思是用P的值去初始化id,可是不要忘了,P本身是变量,不是常量
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP