在 C++ 中,外部连接是指允许其他源文件或库访问的函数和变量。如果将函数或变量标记为 extern,则它将具有外部连接。这意味着它可以在其他源文件中使用。
内部连接是指只能在定义它的源文件中使用的函数和变量。如果没有使用 extern 标识符,则函数和变量将具有内部连接。
例如,在文件 a.cpp 中,我们可以定义一个外部连接的函数,如下所示:
// a.cpp
#include <iostream>
extern void print_hello(); // extern 表示外部连接
int main() {
print_hello();
return 0;
}
在文件 b.cpp 中,我们可以定义一个内部连接的变量,如下所示:
// b.cpp
#include <iostream>
int x; // 默认情况下,x 具有内部连接
int main() {
x = 10;
std::cout << x << std::endl;
return 0;
}
当把多个源文件编译成一个可执行文件时,编译器将使用这些源文件中所定义的所有函数和变量。如果在某个源文件中未定义具有外部连接的函数或变量,则编译器将报告一个错误。