全局變量和全局函數是相對局部變量和局部函數而言的,不在{}或者for, if 等范圍內的都是全局變量或者全局函數,最簡單的是在同一個文件中去聲明。
例如在mian.cpp中
#include <iostream>
int gResult;
int gAdd(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
gResult = aAdd(2, 3);
}
這樣的話main函數上面的都是都是全局變量和全局函數;在整個文件中都可以調用的到,也就是說全局變量是對其所在的整個文件而言的。
但是問題來了,我們需要使用其他文件中全局變量怎么辦,或者說我們需要整個項目中只有唯一的一個全局的變量。
聲明的時候是一樣的,只是在調用的時候需要用extern關鍵字在用的文件中重新聲明一下就可以了。
例如:
我們在base.cpp中聲明一個全局的變量和全局函數
#include <iostream>
#include "base.h"
int gResult;
int gAdd(int a, int b){
return a + b;
}
void print(){
std::cout<<gRedult<<std::endl;
}
現在我們需要在mian.cpp中調用全局變量和全局函數;
int mian(int argc, const char * argv[]) {
//重新聲明base.cpp中的全局變量和全局函數;
extern int gResult;
extern int gAdd(int a, int b);
extern void print();
gResult = gAdd(2, 3);
//可以看到兩次打印的結果都是5,因為他們操作的是同一個全局變量;
std::cout<<gResult<<std::endl;
print();
}