C++ 关键字 extern

版权声明: https://blog.csdn.net/Wang_Jiankun/article/details/82146605

C++ 关键字 extern


extern 是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。


1、extern 变量

B文件使用A文件的变量:

// 在A文件定义一个变量:
int a = 0;

// 在B文件声明变量:
extern int a;
  • 共享的变量定义只能出现一次,但可以在不同文件中声名多次
  • 定义共享变量必须初始化
  • 声名共享变量时不能初始化
  • extern int a = 0;是定义变量,而不是声名

2、extern 函数

B文件使用A文件的函数:

实际上函数的声明和定义都不需要添加extern关键字,在实际使用的时候也最好不要添加关键字。函数加extern 可以取代 include “*.h” 来声明函数。

// 下面两个函数定义等价
extern int func(void)
{
    return 0;
}

int func(void){
    return 0;
}

// 下面两个函数声名等价
extern int func(void);

int func(void);

3、extern const 变量

共享常变量:

常变量默认是静态声明的,所以定义和声名常变量多要加extern

// 在A文件定义一个变量:
extern const int a = 0;

// 在B文件声明变量:
extern const int a;

4、extern “C”

在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,通过 extern “C” 显示声名用C语言规则编译该函数。

// 在.h文件的开头的地方
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */
…
程序语句
…
//.h文件结束的地方
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */

猜你喜欢

转载自blog.csdn.net/Wang_Jiankun/article/details/82146605
今日推荐