免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5368 | 回复: 11
打印 上一主题 下一主题

const 全局变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-09 15:40 |只看该作者 |倒序浏览
我的测试代码是这样的
const int max = 23;
int main()
{
     int a[max];
     return 0;
}

这样它会报 max 非法

如果将max定义放到main函数里面就没问题

本人对const 关键字还不是太熟悉   想请问下大家有没有详细介绍的文档

论坛徽章:
0
2 [报告]
发表于 2011-09-09 15:48 |只看该作者
怎么都没人啊

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2011-09-09 15:50 |只看该作者
那只能换编译器了吧!!!
对于 C++,它应该是对的,因为这里 max 是个常量;
对于 C,max不是个常量,但C允许变长数组,也就是即使不用const来修饰,代码也是对的。
朋友,换编译器吧,算我求你了^_^

论坛徽章:
0
4 [报告]
发表于 2011-09-09 16:05 |只看该作者
对于GCC来说,这好像不是一个问题!

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
5 [报告]
发表于 2011-09-09 16:16 |只看该作者
本帖最后由 zylthinking 于 2011-09-09 16:19 编辑

我在怀疑是不是和 #define max(x, y) (x > y ? y : x) 混了, 之所以在函数内部没问题, 估计是作用域在函数内部, 被优先了, 而放在外面, 两个都是global的, 于是完蛋了
只是猜啊

好吧, 仔细想想, 肯定猜错了

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
6 [报告]
发表于 2011-09-09 16:18 |只看该作者
确实对gcc来说, 不是问题, mac下验证

论坛徽章:
0
7 [报告]
发表于 2011-09-09 16:31 |只看该作者
可能吧   我用的是aCC 编译的

论坛徽章:
0
8 [报告]
发表于 2011-09-09 16:34 |只看该作者
关注

论坛徽章:
0
9 [报告]
发表于 2011-09-10 14:40 |只看该作者
回复 1# OnlyForStudy


    const int max = 23;
     int a[max];

在c中,max总是占用内存的某个地方,所以c编译器不知道它在编译时的值。

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34摩羯座
日期:2013-12-01 00:21:362015年迎新春徽章
日期:2015-03-04 09:49:45
10 [报告]
发表于 2011-09-12 00:00 |只看该作者
那只能换编译器了吧!!!
对于 C++,它应该是对的,因为这里 max 是个常量;
对于 C,max不是个常量,但 ...
bruceteen 发表于 2011-09-09 15:50



   呵呵 估计编译器问题吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP