新手 编译警告:multipe public defintions

[复制链接]
4255|12
 楼主| lk0623 发表于 2010-12-16 18:41 | 显示全部楼层 |阅读模式
用KEIL编译成功 但是遇到2个警告:
multipe public defintions
uncalled segment , ignored for overlay process

刚刚学写C语言,不知道从何查起,麻烦知道 给个修改的方向,第一个貌似是.h里面的变量定义出错了,
xjycug 发表于 2010-12-16 20:32 | 显示全部楼层
可能在头文件声明中,有显性赋值。
比如在*.c的的文件中有变量定义:
unsigned char AAA = 0;
但是在头文件声明时如果写成
extern unsigned char AAA = 0;
则会报multipe public defintions警告
声明应该写成extern unsigned char AAA;
 楼主| lk0623 发表于 2010-12-17 19:16 | 显示全部楼层
嗯 意思是说.h里面不能给变量赋值是吗?
难怪了, 哈哈知道了,谢谢了
coody 发表于 2010-12-17 20:43 | 显示全部楼层
多重定义了,可以用条件编译等手段避免多重包含等等
 楼主| lk0623 发表于 2010-12-17 20:58 | 显示全部楼层
根据2楼的提示,进行了修改,警告变为: UNCALLED SEGMENT, TGNERED FOR OVERLAY PROCESS
 楼主| lk0623 发表于 2010-12-17 21:01 | 显示全部楼层
和unresolved external symbol
xjycug 发表于 2010-12-17 21:06 | 显示全部楼层
把你程序发上来吧,呵呵。
xjycug 发表于 2010-12-17 21:12 | 显示全部楼层
那是原来第二个问题本身没有找到。应该第一个问题给解决了吧
xjycug 发表于 2010-12-17 21:13 | 显示全部楼层
应该你定义了一个函数,而且也声明了这个函数,但是程序中没有调用这个函数吧
原野之狼 发表于 2010-12-18 00:52 | 显示全部楼层
变量的定义不要放在头文件里
头文件需要用宏来控制以避免多重包含。
 楼主| lk0623 发表于 2010-12-19 21:17 | 显示全部楼层
但是二个.c的文件都要用到这个变量,放在.h里不 更方便一点吗?
原野之狼 发表于 2010-12-20 00:28 | 显示全部楼层
h文件的功能并不是用于这里
HWM老师前几天回过一贴 详细地说了这个问题 翻翻看吧
shell.albert 发表于 2010-12-20 07:07 | 显示全部楼层
multipe public defintions
多重公共定义,就是说有个东西定义了多次.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

109

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部