在编程语言中, extern 关键字通常用于声明一个变量或函数是在其他文件或编译单元中定义的。这使得你可以在当前文件中使用这些变量或函数,而不需要在当前文件中重新定义它们。以下是一些常见的使用场景和解释:
1. C/C++语言中
extern 用于告诉编译器,某个变量或函数的定义在其他文件中。这通常用于多文件项目中,当一个文件需要访问另一个文件中定义的全局变量或函数时。
例如:
// file1.c
int globalVar = 10;
// file2.c
extern int globalVar; // 声明 globalVar 是在 file1.c 中定义的
void function() {
globalVar = 20; // 现在可以在 file2.c 中修改 globalVar 的值
}
2. C++11及以后版本
在C++11及以后的版本中,引入了 inline 变量,这允许在头文件中定义变量,并且这些变量可以被多个编译单元使用,而不需要 extern 关键字。
例如:
// header.h
inline int inlineVar = 5; // 定义一个可以在多个文件中使用的变量
// file.cpp
#include "header.h"
void function() {
inlineVar = 10; // 直接使用 inline 变量
}
3. 链接器符号
在某些编程环境中, extern 也可以指一个链接器符号,表示该符号的地址可以在程序的不同部分被引用。
使用 extern 时需要注意,如果声明了一个变量或函数但没有在其他地方定义,编译器会报错。此外,如果多个文件中都包含 extern 声明,但只有一个文件提供了定义,编译器会正常工作;但如果多个文件都提供了定义,将会导致链接错误。