OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4629|回复: 4

移植avr程序,出现multiply defined的错误,解决不了,求指导

[复制链接]

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
发表于 2013-7-4 10:30:53 | 显示全部楼层 |阅读模式
 


移植AVR的程序,用来分析和学习的,文件可能有点混乱,求高人指点

ARM_TD3.rar

72.75 KB, 下载次数: 277

conscience,confidence,courage
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2013-7-4 11:15:54 | 显示全部楼层
你这在display于main当中很多变量被重复定义了。
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-7-4 11:19:46 | 显示全部楼层
应该是在头文件中定义变量了……
业余程序玩家。
回复 支持 反对

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
 楼主| 发表于 2013-7-4 11:59:02 | 显示全部楼层
这些变量和函数只在display.c定义,然后main中include display.c就出错了
conscience,confidence,courage
回复 支持 反对

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2012-8-2
在线时间
8 小时
 楼主| 发表于 2013-7-7 19:10:03 | 显示全部楼层
在C语言中,经常会出现一个项目由多个C文件共同组成,而多个C文件中有时需要引用相同的变量。在嵌入式单片机中,也会出现相同的情况,除了需要条件编译外,还需要全局变量声明:"extern"外部声明。一处进行了定义 unsigned char a ,其他地方再次引用只需要直接声明就好,extern  a;

  放到c文件中,其他地方调用时extern NvU32 disp_init_flag ;一下还是可以的。放到h文件中不行,每个包含这个h文件的c文件都会赋值,就冲突了.
  A.带“extern ”关键字的语句属于声明 (declarations ),不是定义 (definitions ),他不会给变量分配内存。实际上,它是说明程序中的某处包含这个变量的定义 。一个变量可以在程序中被声明 (declarations )多次,但是只能被定义 (definitions )一次。
  B.声明 (declarations )时你可以给变量初始化。但是一旦你这样做,那么这句话也就变成了定义 (definitions ),因为只有在定义 (definitions )的时候才会为变量分配内存。初始化的时候必然要为初始值分配存储空间。如果你在声明 (declarations )的时候同时初始化了变量,即便“extern ”关键字存在,这个语句也会认为是定义 (definitions )。
  其他方面需要具体研究了。http://hi.baidu.com/new/wangh0802


-----------------问题解决了,谢谢各位的回复
conscience,confidence,courage
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 02:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表