extern关键字在C和C++语言中有着多种用途,但最常见的作用是指明变量的外部链接属性。以下是extern关键字的一些主要用途:
声明外部变量:
- 当你在文件中使用
extern关键字声明一个变量时,你是在告诉编译器这个变量在当前文件之外定义。这样,当你想在多个文件中使用同一个全局变量时,你可以在每个文件中使用extern来声明它,而只在一个文件中定义它。
globalVar;- 当你在文件中使用
声明外部函数:
- 同样地,
extern也可以用来声明一个在外部定义的函数。在头文件中经常看到extern用来声明库函数,这样任何包含这个头文件的源文件都知道函数的存在,而不需要函数的定义。
;- 同样地,
指定C链接:
- 在C++中,如果你想在C++代码中包含C语言的代码或者与C库链接,你可以使用
extern "C"来告诉编译器这个函数应该使用C语言的链接规范。这样做是为了避免C++的名称修饰(name mangling)。
;- 在C++中,如果你想在C++代码中包含C语言的代码或者与C库链接,你可以使用
在块作用域中使用:
- 在C99标准及以后的C语言中,
extern关键字可以在代码块内部使用,用于声明一个变量,该变量具有外部链接且其生命周期延伸到程序的整个运行期间。但在块内部声明之前不能有初始化。
{ blockScopedExternalVar; }- 在C99标准及以后的C语言中,
extern关键字通过这些方式帮助开发者控制变量的存储期限和链接属性,使得大型程序的结构更加清晰,并且有助于分离编译,使得各个源文件可以独立编译,最后再链接在一起。
