面试题: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用于告诉编译器一个名称的实际位置详细信息,以便在其他文件中使用该变量或函数,常用于多文件的项目中或库的开发中。