请问,keil中这样定义外部位变量出错,怎么办?

[复制链接]
3272|2
 楼主| hero_0810 发表于 2008-1-29 10:16 | 显示全部楼层 |阅读模式
因为要在其它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


 
 
ayb_ice 发表于 2008-1-29 11:18 | 显示全部楼层

声明的外部变量不能初始化

而且sbit定义要在定义变量的时候一起定义。。。
happystar 发表于 2008-1-29 12:33 | 显示全部楼层

你这样定义

比如在
源文件original_file.c中
   unsigned char bdata signdat=0;
   sbit task0sig = signdat^0; 
在目标文件中object.c中引入
   extern bit task0sig;

这样保证没错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

46

帖子

0

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