论坛元老
 
- 积分
- 4163
- 金钱
- 4163
- 注册时间
- 2017-10-24
- 在线时间
- 251 小时
|
发表于 2018-8-8 14:45:29
|
显示全部楼层
本帖最后由 DreamWaterPro 于 2018-8-8 20:21 编辑
这种现象是由于C语言中变量的作用域导致的。虽然你声明的是一个全局变量,但是如果不在另外引用它的文件中加外部变量声明的话,这个变量就只能在定义它的文件中使用,楼主可以了解一下变量的作用域,就会明白了。
解决办法,5楼说得差不多了,我再补充一下,如果A.c文件中定义了变量tmp:
[mw_shl_code=c,true]#include "sys.h"
#include "a.h"
...
u8 tmp;
...
[/mw_shl_code]
而在B.c文件中想引用这个变量的话:
[mw_shl_code=c,true]#include "sys.h"
#include "b.h"
...
tmp<<=1;
...[/mw_shl_code]
有两种做法,一个是在a.h文件中加上对这个变量的外部引用声明,使用extern关键字:
[mw_shl_code=c,true]#ifndef _A_H_
#define _A_H_
...
extern u8 tmp;
...
#endif [/mw_shl_code]
然后再b.c文件中include "a.h";
另外一种方法是直接在b.c文件首直接添加这个外部引用声明:
[mw_shl_code=c,true]#include "sys.h"
#include "b.h"
extern u8 tmp;
...
tmp<<=1;
...[/mw_shl_code]
推荐前者,在工程量比较大的时候使用头文件能够非常好地处理好这些变量相互之前的外部引用关系——你需要用到哪个文件中的变量,就include那个文件所对应的头文件就可以了。
|
|