C语言中extern的使用方法

下午修改的代码编译一直不过,提示重复定义,查找到原因是对全局变量的使用没有使用extern声明,这里再记录一下extern的使用方法,加深一下记忆吧。

extern是一个关键字,它声明了变量或函数(告诉编译器你先别急着报错,这个变量或函数在其他地方定义了,你去其他地方找找,要么在这个文件的后面,要么在引用的其他文件中)

函数的声明

.c文件提供的接口会在.h中加上声明,但基本不会显示加上extern关键字,因为对于函数来讲,没有函数体,本身默认就是个声明,加不加extern无关紧要,执行时都会去找到函数定义的地方

变量的声明

对于变量就不一样了,如下:

int a;                // 定义一个变量,无论在c还是h文件中
extern int a;    // 声明一个变量

在h文件中不加上extern关键字,同样是声明了一个(全局)变量,在h文件被多次引用后,出现重复定义的错误,即使使用#ifdef包裹起来这个.h文件也无法解决。

这篇文章写得很清楚,参考: https://blog.csdn.net/csdnwei/article/details/51836182

猜你喜欢

转载自my.oschina.net/u/2561528/blog/1808288