在C++中,外部链接(external linkage)和内部链接(internal linkage)是与变量、函数以及常量的作用域和可见性相关的两个重要概念。
外部链接表示变量、函数或常量可以被其他文件访问。关键字 extern
常用于声明具有外部链接的变量。
// File1.cpp
#include <iostream>
// 声明具有外部链接的全局变量
extern int globalVariable;
int main() {
std::cout << "File1: " << globalVariable << std::endl;
return 0;
}
// File2.cpp
#include <iostream>
// 定义具有外部链接的全局变量
int globalVariable = 42;
int main() {
std::cout << "File2: " << globalVariable << std::endl;
return 0;
}
内部链接表示变量、函数或常量只能在当前文件内部访问。使用关键字 static
可以使变量、函数或常量具有内部链接。
// File1.cpp
#include <iostream>
// 声明具有内部链接的全局变量
static int internalVariable = 10;
int main() {
std::cout << "File1: " << internalVariable << std::endl;
return 0;
}
// File2.cpp
#include <iostream>
// 错误:无法访问具有内部链接的变量
// std::cout << "File2: " << internalVariable << std::endl;
int main() {
return 0;
}
外部链接允许变量、函数或常量在多个文件之间共享,而内部链接限制了它们的可见性,仅在当前文件内可访问。选择使用外部链接还是内部链接取决于变量或函数的作用域需求。