首先,在.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