在C++编程语言中,“extern”是一个关键字,它通常用于声明一个变量或函数,表示该符号存在于程序的其他部分或者外部文件中。换句话说,“extern”告诉编译器,这个标识符不是在这个文件中定义的,而是在别的地方定义的。
extern的基本用途
1. 跨文件共享变量
当我们需要在一个源文件中使用另一个源文件中定义的全局变量时,可以使用“extern”。例如:
- 文件 `file1.cpp` 中定义了一个全局变量 `int globalVar = 42;`
- 在 `file2.cpp` 中,如果想使用这个变量,就需要这样声明:`extern int globalVar;`
2. 声明外部函数
如果你有一个函数在某个头文件中声明,并且在另一个源文件中实现,那么在调用这个函数的地方也需要使用“extern”来声明。比如:
```cpp
// header.h
extern void myFunction();
// main.cpp
include "header.h"
void myFunction() {
// 函数实现
}
// anotherFile.cpp
include "header.h"
void someOtherFunction() {
myFunction();// 调用函数
}
```
3. 避免重复定义
使用“extern”可以帮助我们避免在多个文件中重复定义同一个变量或函数。通过这种方式,编译器知道这些符号已经在其他地方定义好了。
注意事项
- 链接阶段的重要性
“extern”主要影响的是链接阶段。即使你在多个文件中都使用了“extern”来声明同一个符号,最终只有一个定义会被链接到可执行文件中。
- 局部作用域
“extern”也可以用于局部作用域,但这相对少见。一般情况下,“extern”更多地用于全局范围内的变量和函数。
总之,“extern”是C++中一个非常重要的关键字,它帮助开发者有效地管理代码结构,尤其是在大型项目中,能够清晰地区分哪些变量或函数是外部提供的,从而提高代码的可维护性和可读性。