免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
81 [报告]
发表于 2008-09-29 23:19 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
82 [报告]
发表于 2008-10-04 22:25 |只看该作者
const char *

论坛徽章:
0
83 [报告]
发表于 2008-10-05 11:02 |只看该作者
原帖由 emacsnw 于 2008-9-24 23:41 发表
答案就在标准里:

C99标准 6.7.8 Initialization 第4款:
4 All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.
...


看来从标准中寻找答案才是王道,接下来有必要学习一遍C99了。

论坛徽章:
0
84 [报告]
发表于 2008-10-07 00:11 |只看该作者
test.c:12: error: initializer element is not constant
test.c:12: error: (near initialization for ‘t1.id’)

错误描述得很清楚,就是因为在初始结构的时候没有使用常量。

这个涉及到编译。

可以参考《C++编程思想》的常量篇。

论坛徽章:
0
85 [报告]
发表于 2008-10-12 20:47 |只看该作者
42楼的标准规定,以及56楼的汇编,这两楼说的很清楚。

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
86 [报告]
发表于 2008-10-12 22:33 |只看该作者

回复 #85 kiffa 的帖子

我这边也是 windows下 gcc不通过 /g++通过

受教了

论坛徽章:
0
87 [报告]
发表于 2008-10-18 16:16 |只看该作者
编译器不是很客气的抱怨并解释原因了没,使用了非常量初始化

论坛徽章:
0
88 [报告]
发表于 2009-05-08 20:01 |只看该作者
原帖由 ddfqqy 于 2008-9-28 11:16 发表


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


这个char *p ="aaa"; 在c++中也是对的哈。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP