声明一个全局变量可以跨文件使用---extern的使用

变量定义

变量定义使用“数据类型+变量名称”的形式,编译器需要给他分配内存单元的;

变量声明----声明的时候不能赋初值,否则就变成定义了

变量声明使用“extern 变量类型+变量名称”的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。

使用关键字extern可以实现全局变量的跨文件使用

一共有五个文件,分别是main.cpp、A.h、A.cpp、B.h、B.cpp

1、在A.h中声明一个变量为外部全局变量

#ifndef A_H
#define A_H
//声明变量为外部变量
extern int val;
void GetNum_A();
#endif 

2、在A.cpp文件中定义和初始化全局变量(注意:如果定义在局部变量里面就不能被其它文件调用了)

#include<iostream>
#include"A.h"
using namespace std;
int val = 11;
void GetNum_A()
{
    cout << val << endl;
}

3、在B.h文件中导入A.h的头文件

#ifndef B_H
#define B_H
#include"A.h"
void GetNum_B();
#endif 

4、在B.cpp文件中导入B.h的头文件(或者直接导入A.h)

#include<iostream>
#include"B.h"
using namespace std;
int val = 13;
void GetNum_B()
{
    //val++;
    cout << val << endl;
}

5、在main.cpp文件中使用

#include<iostream>
#include"A.h"
#include"B.h"
using namespace std;
int main()
{
    cout << "GetNum_A=" ;
    GetNum_A();
    cout << "GetNum_B=";
    GetNum_B();
    system("pause");
    return 0;
}

输出

注意:只能在一个文件中去定义共享的变量val,多个文件定义会报重复定义的错误

也可以自己在类里面封装一个方法去获取变量,在使用的时候直接调用这个方法就可以了

原文地址:https://www.cnblogs.com/-citywall123/p/12884912.html