一、全局變量
一般最好把全局變量聲明在cpp文件中(如果在.h文件中定義的話,多層包含可能會引起重復定義的錯誤)
cpp中定義好了之后,可以在.h文件中利用 extern關鍵字進行 聲明(extern 聲明表示在此處引入外部定義變量的聲明,而不是在本編譯單元中再聲明一個同名的局部變量)然后其他文件要使用這些變量的時候,只要#include 這個頭文件就可以了,而且不會引起重復定義的錯誤。
二、靜態全局變量
即使用static修飾的全局變量,它不能使用extern進行引入聲明,即extern與static不可以一起使用;而且static全局變量與普通全局變量有很大不同。
static修飾的全局變量聲明與定義是一體的,在頭文件中聲明了static全局變量,同時也是定義了它。
多個編譯單元都包含static全局變量所在的頭文件,不會引起重定義錯誤,因為每個編譯單元都開辟了新的空間存儲它。
三、全局常量
const全局變量使用起來與普通全局變量一樣,在.cpp中定義並賦初值,在.h頭文件中用extern進行聲明,然后再需要使用的地方包含.h即可,在多個編譯單元中其內存地址也不同(這一點與static全局變量類似),但是由於是常量,不能修改其值,所以即使內存地址不一樣也沒影響,值都一樣。