作者是keil 4的新手,刚上手此编译器,如有不当,敬请斧正!
当我们想象vc一样使用keil里面的全局变量,函数时,明明定义了全局变量,包含了头文件,结果,在keil里要么报重定义错误,要么,干脆报未定义错误!
经过作者的实验,明确了keil 4在编程时,xx.h,xx.c,main.c三者中全局变量和函数定义,及其在main.c引用的使用技巧。
/*---------------------------------------------------------------------------------------------------------
第一个文件,xx.c文件,如test.c,代码如下:
----------------------------------------------------------------------------------------------------------*/
#include "reg51.h"
//1.宏可以用函数的方式返回来运用,最简单的当然是在其它文件再定义一个宏,如 sbit key
#define GPIO_SENSOR P2
//2.sbit 相当于宏定义,不能像全局变量a一样引用,可以在想引用的文件再次定义,如main.c所示
sbit key = P1^2;
//3.全局变量定义在.c文件,在相应的.h文件引用,其它.c文件想引用,可以包含相应.h文件,如main.c包含了"test.h"
int b = 0;
int a = 0;
//1.
void gets(){
b = GPIO_SENSOR;
}
//2.
int get_a()
{
return a;
}
/*---------------------------------------------------------------------------------------------------------
第二个文件,xx.h文件,如test.h,代码如下:
----------------------------------------------------------------------------------------------------------*/
#ifndef __TEST_H__
#define __TEST_H__
extern void gets();
extern int get_a();
extern int a;
extern int b;
#endif
/*---------------------------------------------------------------------------------------------------------
第三个文件,main.c文件,代码如下:
----------------------------------------------------------------------------------------------------------*/
#include <test.h>
#include "reg51.h"
sbit key = P1^2;
void main(void)
{
gets();
get_a();
a = 0;
key=0x10;
//GPIO_SENSOR = 0X11; 错误
}
工程目录截图如下:
无错误,无警告,代码模块化,耦合性低。