前言
在写C++工程文件的时候,往往会用到一些所有类都使用的数据,比如数据文件等,一种写法是写成静态类,调用数据时使用类名加属性名的形式,另一种时写成全局变量的形式。
C++工程组织结构是按照xx.h文件中写函数/类的声明,xx.cpp文件中写函数的定义,所以对于全局变量而言,比较合适的写法是为这些全局变量专门建立一个文件对。
一、extern的使用
全局变量在工程中往往是跨文件使用的,比如在a.h中定义的变量要在b.cpp,c.cpp文件中使用。
//a.h
using namespace std;
extern int num_a;
//b.cpp
#include "a.h"
void print(){
cout<<num_a<<endl;
}
如果此时在全局变量num_a声明的时候没有添加修饰词extern则不能跨文件调用。
二、容易犯的错误
在使用全局变量前,要注意满足 “先声明,后定义,再使用”的原则,即在a.h中声明了num_a变量,需要在a.cpp文件中赋值/定义。定义时不需要再写extern,但仍需写int。(事实上在其他任何一个cpp文件中定义都可以,不过最好在同名的文件中方面debug)。
//a.cpp
#include "a.h"
int num_a=10;
常见的错误
错误1:未在cpp中定义就直接使用。这种通常会报错为 “”找不到xx变量“
错误2:直接在a.h中定义,即文章来源:https://www.toymoban.com/news/detail-442552.html
using namespace std;
extern int num_a=10;
如果仅有一个cpp文件include了a.h可能不会报错,当有多个cpp文件include这个头文件,则会报 “变量重复定义”的错误。
需要区分的是,当变量定义在类内时,是可以直接赋值的。例如:文章来源地址https://www.toymoban.com/news/detail-442552.html
using namespace std;
class test{
private:
int num_a=10;
public:
test();
}
```
到了这里,关于C++ 全局变量的跨文件使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!