什么是 extern?
extern
是 C++ 中的一个关键字,用于声明一个全局变量或函数,但并不分配内存或提供定义。它的主要作用是告诉编译器这个变量或函数在其他源文件中定义,编译器不应该分配内存空间或生成代码,而应该等待链接器来解析它。
使用 extern 声明变量
// 在一个源文件中定义一个全局变量
int globalVar = 42;
// 在另一个源文件中使用 extern 声明这个变量
extern int globalVar;
int main() {
// 可以在这里使用 globalVar,编译器知道它的存在
return 0;
}
在一个源文件中定义了 globalVar
,然后在另一个源文件中使用 extern
来声明它,以便在 main
函数中使用。
使用 extern 声明函数
extern
同样适用于函数的声明,在一个源文件中声明函数,然后在另一个源文件中定义它。
// 在一个源文件中声明函数
extern void someFunction();
int main() {
// 调用在其他源文件中定义的函数
someFunction();
return 0;
}
示例
假设有两个源文件:main.cpp
和 functions.cpp
。
main.cpp
:
#include <iostream>
// 声明在 functions.cpp 中定义的函数
extern void printMessage();
int main() {
printMessage();
return 0;
}
functions.cpp
:
#include <iostream>
// 定义函数
void printMessage() {
std::cout << "Hello from functions.cpp!" << std::endl;
}
在 main.cpp
中使用 extern
声明了 printMessage
函数,然后在 functions.cpp
中定义了这个函数。编译和链接这两个源文件时,输出 “Hello from functions.cpp!”。
总结
extern
关键字允许在一个源文件中声明全局变量和函数,然后在其他源文件中定义它们。