关于Keil中,变量函数跨文件引用报错问题

作者是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
#include "reg51.h"


sbit key = P1^2;  




void main(void)
{
gets();
get_a();
a = 0;
key=0x10;
//GPIO_SENSOR = 0X11; 错误

}

工程目录截图如下:

关于Keil中,变量函数跨文件引用报错问题_第1张图片


无错误,无警告,代码模块化,耦合性低。

你可能感兴趣的:(51单片机)