C++使用全局變量

如果在在多個.cpp文件中都要用到某個變量,那麼這個變量就是全局變量。

首先,在.h文件中聲明這個變量,加上extern關鍵字,但是不能給變量賦值。比如在頭文件a.h中這樣寫:

#ifndef _A_H
#define _A_H
extern int global;
#endif
在main()函數所在的文件種定義這個全局變量,可以初始化。

#include <iostream>

using namespace std;

void f1();
void f2();
int global;

int main()
{
    global = 1234;
    f1();
    f2();
    cout<<"main:global="<<global<<endl;
    return 0;
}
在main()函數中還聲明瞭兩個函數f1()和f2(),它們分別在a1.cpp和a2.cpp這兩個文件中定義。在這兩個文件中都用到了global這個全局變量,所以在這兩個文件中要include頭文件a.h

/*a1.cpp*/

#include <iostream>
#include "a.h"
using namespace std;

void f1()
{
    global = 1111;
    cout<<"f1:global="<<global<<endl;
}
/*a2.cpp*/

#include <iostream>
#include "a.h"
using namespace std;

void f2()
{
    global = 2222;
    cout<<"f2:global="<<global<<endl;
}
最後,同時編譯a.cpp,a1.cpp,a2.cpp這3個文件
g++ -W a.cpp a1.cpp a2.cpp -o a
運行
./a
結果如下:
f1:global=1111
f2:global=2222
main:global=2222
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章