声明一个全局变量可以跨文件使用---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,多个文件定义会报重复定义的错误
也可以自己在类里面封装一个方法去获取变量,在使用的时候直接调用这个方法就可以了
等风起的那一天,我已准备好一切