| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5651 人关注过本帖
标题:关于常量数组如何声明的问题[请教]
只看楼主 加入收藏
frank_yu_bjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-10
收藏
 问题点数:0 回复次数:5 
关于常量数组如何声明的问题[请教]

关于常量数组声明的问题

编译环境是KEIL的7.50版本
我在a.c中定义了一个数组:
unsigned char const far a[5] = {0, 0, 0, 0, 0};
在a.h中声明这个数组:
extern unsigned char const far a[5];
如果在a.c中包含a.h,发现a.c的数据量增加了5个字节,像是为a.h中的a数组分配了空间,但我只是想在a.h中声明,并且不希望占用空间。
如果我在b.c中包含a.h,b.c就不会为a数组分配5个字节的空间。
谁知道这是为什么吗?

搜索更多相关主题的帖子: 常量 声明 数组 空间 定义 
2007-09-12 08:34
jiangzw625
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2006-3-27
收藏
得分:0 
什么啊?你在a.c定义的当然在a.c对应的obj里存在,声明并不占内存阿,它只是告诉链接器一声,说我要用一块数据,但它在其他obj里

马马乎乎
2007-09-12 21:07
frank_yu_bjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-10
收藏
得分:0 
谢谢你的答复,我也知道声明不应占内存的道理,但我看.map文件确实为a.h中对数组的声明也分配了5个字节的空间,相当于我这个数组a一共占用了10个字节的空间
2007-09-13 08:46
frank_yu_bjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-10
收藏
得分:0 
顶一下,希望能得到高手的答复
2007-09-17 12:45
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
唉,不是同一数组么?有地方分配了不就可以了?a也好,b也好,c也好反正都是同一数组这有什么奇怪?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-17 12:52
frank_yu_bjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-10
收藏
得分:0 
主要是这个数组占了两倍的空间,因为实际应用中我的这个数组非常大,所以浪费了太多的存储空间,导致编译溢出。希望高手能帮忙解释一下
2007-09-18 08:50
快速回复:关于常量数组如何声明的问题[请教]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011298 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved