變量定義
變量定義使用“數據類型+變量名稱”的形式,編譯器需要給他分配內存單元的;
變量聲明----聲明的時候不能賦初值,否則就變成定義了
而變量聲明使用“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,多個文件定義會報重復定義的錯誤
也可以自己在類里面封裝一個方法去獲取變量,在使用的時候直接調用這個方法就可以了