这篇总结网上的分析,部分存在雷同
我的理解
常用:extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
A.cpp定义了全局变量int a,B.cpp也想用
很简单:extern int a
extern有两个作用
- 当它与"C"一起连用时,是告诉编译器在编译这部分时按着C的规则去编译,不然C++的规则在翻译这个部分时会把它完全弄成一堆乱码
写法如下:
#ifndef __XXX_H__
#define __XXX_H__
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
};
#endif
-
照抄网上一段话:
在头文件中: extern int g_Int; 它的作用就是声明全局变量或函数的作用范围的关键字,其声明的函数和变量可以在本模块或其他模块中使用,记住它是一个声明不是定义。也就是说B模块如果引用A模块中定义的全局变量或函数时,它只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会在连接时从模块A生成的目标代码中找到此函数。
extern用在变量声明中常常有这样一个作用,在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。

被折叠的 条评论
为什么被折叠?



