C语言 | extern关键字

发布时间 2023-08-03 18:50:40作者: C111-CR

extern是C语言中的关键字,它会声明一个全局变量或者函数,表明变量或者函数是定义在其他其他文件中的。

定义:表示创建变量或分配存储单元。

声明:说明变量的性质,但并不分配存储单元。

extern int i;			// 只是声明,但没有分配内存空间给变量i
int i;				// 是定义,给变量i分配了4个字节
extern int i = 17;		// 是定义,但使用extern时不应该对变量进行定义

extern往往用来在头文件中声明变量(对于函数而言,如果没有函数体,即{}中的代码,那么就是声明;反之,则为定义。因此,函数的定义与声明很好区分,不需要用到extern),以便在多个.c/.cpp文件中定义和使用该变量。

例如,在a.h文件中声明变量extern map<int, int> mp;,之后可以在a.cpp中定义全局变量map<int,int> mp;(只能在函数外定义),然后再在main.cpp中使用变量mp[0] = 1;

需要注意的是,在头文件中使用extern会声明一个全局变量,之后需要经过定义才能够使用该变量(在任意.cpp文件的全局变量部分定义),而且这个全局变量只能定义一次。

关于多文件编程:在头文件(a.h)中声明 变量/函数/类,然后再在对应的cpp文件(a.cpp)中进行定义(变量,成员/非成员函数的主体),之后再编写main函数以运行代码。