extern关键字的用法——多个.c文件之间的相互联系

版权声明:本人博客内容均为自己学习总结和参考使用,不用做商业用途,转载请注明出处。 https://blog.csdn.net/bornpride/article/details/87857940

extern关键字的两个基本作用

1、当一个变量的声明不在文件的开头,在它声明之前的函数想要引用的话,则应该用extern进行“外部变量”声明
下面用一个简单的程序介绍extern关键字的这种用法,我们知道有这么回事就够了,只要能够看懂别人这样写就行了,自己写程序的时候就不要这么写了。

#include <reg52.h>
sbit LED=0;
void main ()
{
	extern unsigned int i;
	while(1)
	{
		LED=0;					//点亮小灯
		for(i=0;i<30000;i++);   //延时
		LED=1;                  //熄灭小灯
		for(i=0;i<30000;i++);   //延时
	}
}
unsigned int i;
……                              //此处省略后面的代码,只是为了说明extern关键字的用法,不建议是用这种方式声明变量

变量的作用域,是从声明这个变量开始往后所有的程序,如果我们调用在前,声明在后,那么就是使用的这种用法。但是实际开发过程中,我们一般都不会这样做,所以仅仅是表达一下extern的这个用法,但它并不实用。

2、在一个工程中,我们为了方便管理和维护代码,用了多个.c源文件,如果其中一个main.c文件要调用Lcd1602.c文件里的变量或者函数的时候,我们就必须得在main.c里边进行一下外部声明,告诉编译器这个变量或者函数是在其它文件中定义的,可以直接在这个文件中进行调用

#include <reg52.h>

unsigned char step=0;	//操作步骤
unsigned char oprt=0;	//运算类型
signed long num1=0;		//操作数1
signed long num1=0;		//操作数2
signed long result=0;	//运算结果
unsigned char T0RH=0;	//定时器T0重载值的高字节
unsigned char T0RL=0;	//定时器T0重载值的低字节

void config_timer0(unsigned int ms);	//配置定时器T0函数的声明
extern void key_scan();					//按键扫描函数的声明
extern  void key_driver();				//按键驱动函数的声明
extern  void init_LCD1602();			//LCD1602初始化函数的声明
extern  void LCD_show_str(unsigned char x,unsigned char y,unsigned char *str);	//LCD1602显示字符函数的声明
extern  void LCD_area_clear(unsigned char x,unsigned char y,unsigned char len);	//LCD1602区域清除函数的声明
extern  void LCD_full_clear();			//LCD1602清屏函数的声明

void main ()
{
	EA=1;						//开总中断
	 config_timer0(1);			//配置定时器T0定时1ms
	 init_LCD1602();			//初始化液晶
	 LCD_show_str(15,1,"0");	//初始时液晶显示数字0
	 while(1)
	{
		key_driver();			//调用按键驱动
	}
}         
……                              //此处省略后面的代码,只是为了说明extern关键字在多个.c文件之间调用的用法

猜你喜欢

转载自blog.csdn.net/bornpride/article/details/87857940
今日推荐