搜索
bottom↓
回复: 10

ucos2在iar中定义全局变量这样可以吗extern volatile unsigned int b1;在.h中

[复制链接]

出0入0汤圆

发表于 2010-9-8 10:03:26 | 显示全部楼层 |阅读模式
如题:在.h中定义extern volatile unsigned int b1;这样的变量可以吗?
为什么在任务中调用的函数包括了上面定义的变量时就会报告说没有明确的定义啊?
Error[e46]: Undefined external "b1" referred in DS18B20 ( E:\iar project\ucos0901\osshyprojet\Debug\Obj\DS18B20.r90 )
Error while running Linker

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-9-8 10:42:48 | 显示全部楼层
在某个C文件里写上:
volatile unsigned int b1;

出0入0汤圆

 楼主| 发表于 2010-9-8 10:46:05 | 显示全部楼层
回复【1楼】STM8L103
-----------------------------------------------------------------------

可是我有几个.c文件都要用到这一个变量啊。

出0入0汤圆

发表于 2010-9-8 11:02:19 | 显示全部楼层
这样做不是很理智

出0入0汤圆

 楼主| 发表于 2010-9-8 11:04:53 | 显示全部楼层
回复【3楼】xuxi2009
-----------------------------------------------------------------------

那怎么处理各个函数共用的全局变量?

出0入0汤圆

 楼主| 发表于 2010-9-8 11:08:47 | 显示全部楼层
现在是把原有的程序移植到操作系统中,原来设计是用了很多的全局变量,但现在都转成信号消息队列比较困难。有什么好的解决方法吗?

出0入0汤圆

发表于 2010-9-8 11:13:38 | 显示全部楼层
回复【2楼】wshini7316
回复【1楼】stm8l103  
-----------------------------------------------------------------------
可是我有几个.c文件都要用到这一个变量啊。
-----------------------------------------------------------------------

又没让你在所有C文件都定义b1,
仅仅是在一个C文件定义b1,

工程里所有C文件使用b1,包含头文件就可以使用。

出0入0汤圆

发表于 2010-9-8 11:18:16 | 显示全部楼层
extern volatile unsigned int b1;

意思是告诉编译器,b1是个外部变量,其定义由外部提供。

所有C文件都说b1由外部提供,结果连接的时候,都去去找b1的定义,
肯定找不到,当然报错。
都去用,没人提供,不行。


要有个C文件说,b1我已经定义好,你们要用就来用吧,这样连接通过。
一个人定义,所有人都可以用。


如果多个C文件都定义外部变量b1,也会出错,b1重复定义了。
多个人都定义同一个变量,也不行,会冲突。

出0入0汤圆

 楼主| 发表于 2010-9-8 11:28:56 | 显示全部楼层
回复【6楼】STM8L103
-----------------------------------------------------------------------

不行,我把所有的全局变量都放在c的一个文件中,在其他函数中就会报告变量没有定义。

出0入0汤圆

 楼主| 发表于 2010-9-8 11:29:58 | 显示全部楼层
回复【8楼】wshini7316
-----------------------------------------------------------------------

我在试试啊

出0入0汤圆

 楼主| 发表于 2010-9-8 11:33:42 | 显示全部楼层
回复【7楼】STM8L103
-----------------------------------------------------------------------

谢谢!受教了。现在编译通过了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 05:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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