关于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 <test.h>
#include "reg51.h"


sbit key = P1^2;  




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

}

工程目录截图如下:



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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值