C++中的extern声明变量详解
什么是extern声明变量
extern关键字用于声明一个变量是在其他文件中定义的,可以在当前文件中使用。其作用是告诉编译器不要在当前文件中寻找这个变量的定义,而在其他文件中寻找。
为什么要使用extern声明变量
当我们在一个项目中使用多个文件时,每个文件都有自己的作用域。如果我们想在多个文件中使用同一个变量,那么就需要在这些文件中声明同一个变量。在C++中,一个变量只能被定义一次,如果在多个文件中都定义了同一个变量,编译器会报错。所以,我们需要使用extern关键字来声明这个变量是在其他文件中定义的。
如何使用extern声明变量
在当前文件中使用其他文件中定义的变量,需要在使用前先对变量进行extern声明。示例代码如下:
// file1.cpp
int num = 10;
// file2.cpp
#include <iostream>
using namespace std;
extern int num; // extern声明变量
void printNum(){
cout << "num = " << num << endl;
}
在file2.cpp文件中,我们对于在file1.cpp中定义的变量num进行了extern声明,这样我们就可以在file2.cpp中使用变量num了。
使用extern和不使用extern的区别
我们可以将示例代码中printNum函数进行一下改变:
void printNum(){
extern int num;
cout << "num = " << num << endl;
}
这样,在使用变量num时,我们没有使用extern关键字。实际上,在使用变量时,使用extern和不使用extern是一样的,编译器会自动将未定义的变量当作extern声明的变量处理。但是,为了明确地告诉编译器变量是在其他文件中定义的,我们最好使用extern关键字。
总结
使用extern关键字,可以在一个文件中使用其他文件中定义的变量,从而避免在多个文件中定义同一个变量而导致的编译错误。在使用变量时,使用extern和不使用extern是一样的,但为了明确地告诉编译器变量是在其他文件中定义的,我们最好使用extern关键字。
示例1
// file1.cpp
int num = 10;
// file2.cpp
#include <iostream>
using namespace std;
extern int num;
int main(){
cout << "num = " << num << endl;
return 0;
}
示例2
// file1.cpp
extern int num;
void setNum(int value){
num = value;
}
// file2.cpp
#include <iostream>
using namespace std;
int num;
int main(){
setNum(10);
cout << "num = " << num << endl;
return 0;
}
在示例2中,我们使用extern声明了变量num,然后在另外一个文件中定义了这个变量,并且通过setNum函数设置了变量num的值,最后在主函数中输出了变量num的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中的extern声明变量详解 - Python技术站