面试题:C++ extern作用?
在C++中,关键字extern可以用于声明变量或者函数是在别处定义的。简单来说,关键字extern用来告诉编译器一个名称的实际位置详细信息,以便在其他文件中使用该变量或函数。
使用场景
如果在多个源文件中使用同一全局变量或函数,则需要使用extern关键字来进行声明。
例如,在main.cpp
文件中定义了一个全局变量g_var
,并在另外一个文件func.cpp
中也希望访问这个全局变量,则需要在func.cpp
中使用extern来声明该全局变量的存在,如下所示:
// main.cpp
#include <iostream>
int g_var = 0; //定义全局变量
int main() {
std::cout << "g_var in main is: " << g_var << std::endl; //输出全局变量
return 0;
}
// func.cpp
extern int g_var; //使用extern关键字声明全局变量
void func() {
g_var++; //修改全局变量的值
}
此时,程序可以在main.cpp
和func.cpp
两个文件中共享相同的全局变量g_var
。
注意事项
以下是使用extern关键字的几点注意事项:
- 在变量定义和使用的地方都可以加上extern关键字,但只有在变量定义前面加上extern才表示变量对其他文件是可见的。
- 如果在一个文件中定义并初始化了一个全局变量,同时在另一个文件中使用该全局变量时不需要extern声明。因为全局变量的定义已经包含了extern的语义。
- 如果多个文件包含同一头文件,该头文件中定义并初始化了一个全局变量,则所有包含该头文件的文件都将获得对这个变量的定义,此时需要使用关键字
extern
表示它部分或全部地可能已经定义。
综上所述,关键字extern用于告诉编译器一个名称的实际位置详细信息,以便在其他文件中使用该变量或函数,常用于多文件的项目中或库的开发中。