单片机及C51的sbit变量,如何实现外部文件引用,extern声明不行

2020-01-19 19:37发布

本帖最后由 bbssilverkey 于 2013-5-22 13:01 编辑

文件3个:
a.c  - 用sbit声明老了一个变量 key
a.h
_main.c - #include "a.h"  主函数调用 key这个变量,编译 显示未定义

问题:我不把sbit丢a.h不行么?当然丢a.h肯定能过编译.
请教解决方法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
25条回答
chencc8
2020-01-20 22:05
jswd0810 发表于 2013-5-23 13:43
应该没有问题吧,我的定义
uchar bdata other_in;//此处other_in必须为bdata类型,否则编译出错
sbit mybit ...

我是说在多文件的工程中如何使用sbit。
比如A模块的源文件中定义了:
uchar bdata other_in;
sbit mybit0=other_in^0;
sbit mybit1=other_in^1;
sbit mybit2=other_in^2;
sbit mybit3=other_in^3;
sbit mybit4=other_in^4;
sbit mybit5=other_in^5;
sbit mybit6=other_in^6;
sbit mybit7=other_in^7;

那么我在B模块的源文件中如何使用mybit0~7呢,
现在就算是在A模块的头文件中增加声明:extern uchar bdata other_in;
或者在B模块的源文件中声明:extern uchar bdata other_in;
然后再在B模块的源文件中声明:
sbit mybit0=other_in^0;
sbit mybit1=other_in^1;
sbit mybit2=other_in^2;
sbit mybit3=other_in^3;
sbit mybit4=other_in^4;
sbit mybit5=other_in^5;
sbit mybit6=other_in^6;
sbit mybit7=other_in^7;
都会在B.c下报错:other_in是错误的基地址

一周热门 更多>