请问大家是在keil怎么定义全局变量的,当几个.C文件想同时调用定义在.H文件里面的全局
先谢谢了!! 定义在.H文件里面的全局变量的时候...变量定义不要放在头文件里。
在C文件里定义,在头文件里extern module1.h
extern int iCounts;
module1.c
int iCounts;
moudule2.c
moudule3.c
#include "moudule1.h" 先谢谢楼上的两位朋友!
以2楼朋友的例子,先在.H文件里面声明extern,然后在一个需要调用此变量的.C定义此变量,但请问在module1.C已经定义,在其他module2.c和module3.c用到此变量时还需定义一次吗?还是只需#includes "module1.h"即可? mark 以2楼朋友的例子,先在.H文件里面声明extern,然后在一个需要调用此变量的.C定义此变量,但请问在module1.C已经定义,在其他module2.c和module3.c用到此变量时还需定义一次吗?还是只需#includes "module1.h"即可?
再定义一次不是重复定义了嘛,包含头文件就行了。 首先,定义只许一次,否则会出错,
extern unsigned char a;
这叫外部引用,扩宽这个变量的作用域。
我一般是在具体的函数内部才使用extern引用进来,否则,在开头处引用的话都不知道该文件哪个函数使用了该变量,很不方便 我是这样做的:
Public_define.h
extern bit timer0flag
#include "public_define.h"
mcu_function.c
{
}
#include "public_define.h"
rf_function.c
{
}
#include "public_define.h"
main.c
{
bit timer0_flag;
timer0_flag=0;
}
但在mcu_function.c不能使用此变量,请指点!
谢谢各位的热心帮助,事情好像解决了
解决如下:
bit timer0_flag;
main.c
{
timer0_flag=0;
}
在主函数中对timer0_flag的定义放在主函数外即可! .H文件中只放置声明——函数的声明使用“函数头部”+“;”的形式,变量的声明用“extern”
.C文件中才放置定义。 可以参考UCOS源码的定义方法。 在主函数中对timer0_flag的定义放在主函数外即可!
---------------------------------------------------
这个是全局变量当然要在函数外边定义了,定义在函数里面是局部变量。 多谢各位,小弟受益了。。。 mark 呵呵 不错,刚好用到。 mark 又学到一点!
页:
[1]