打印
[ZLG-MCU]

keil里如何把位变量定义为外部出错,怎么办?

[复制链接]
1969|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hero_0810|  楼主 | 2008-1-29 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为要在其它c文件中使用同一个位变量(标志位),所以必须将其定义为外部。

1)在bdata中定义可位寻址字节signdat:
   extern unsigned char bdata signdat=0;
2)然后定义位:
   sbit task0sig = signdat^0;

3)再然后就出错了:

但是如果下面这样去掉“extern”就没有问题:
1)在bdata中定义可位寻址字节signdat:
   unsigned char bdata signdat=0;
2)然后定义位:
   sbit task0sig = signdat^0;


请问各位老师这可怎么办?
我必须要使同一bit变量可以在同一工程内的其它c文件中使用,因为这bit变量可能是任务标志,显示刷新标志等系统参数。

请您务必要帮我!感激不尽!
                                               小刘
                                        QQ:382339388
                                    e-mail:hero_0810@163.com

相关帖子

沙发
hero_0810|  楼主 | 2008-1-29 09:53 | 只看该作者

不知为什么丢了张图,补传……

上传报错图片

使用特权

评论回复
板凳
hero_0810|  楼主 | 2008-1-29 11:15 | 只看该作者

自己的问题自己答

不知道我的推测对吗,推测答案如下,请指正:

定义外部变量时,只需要在函数外这样定义:“类型名 变量名;”
而不要在前面加“extern”;
而声明时,可以写成“extern 类型名 变量名;”
也可以写成“extern 变量名;”,这两种写法等效,变量的类型取决于定义时的类型。

对吗?
谢谢!

使用特权

评论回复
地板
hero_0810|  楼主 | 2008-1-29 11:36 | 只看该作者

发现keil里的extern跟谭浩强老师书中介绍的稍有不同

上面说到:
“声明时,可以写成“extern 类型名 变量名;”
也可以写成“extern 变量名;”,这两种写法等效”

但是刚刚在keil里测试了一下,声明时必须用“extern 类型名 变量名;”这种格式。

使用特权

评论回复
5
harlemjia| | 2008-2-4 01:43 | 只看该作者

怎么只有你在说啊 ,呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

46

帖子

0

粉丝