正確的實現方法是:在其它文件都引用的頭文件中用extern關鍵字聲明一個鏈接屬性為external的全局變量,並在對應的源文件中定義該變量。然后在需要使用該變量的源文件中用extern關鍵字聲明該全局變量,這樣就能夠在不同的言文件中共享全局變量了。
例如,有三個源文件file1.cpp、file2.cpp和file3.cpp需要共享一個全局變量a,正確的方法是:在頭文件file1.h中聲明全局變量a(注:省略此聲明也可以通過編譯,但是此聲明表明了全局變量定義的位置,增加代碼可讀性):
在源文件file1.cpp中定義全局變量a(注:也可以在其它源文件中定義,在此定義增加代碼可讀性):
分別在使用到變量a的源文件file2.cpp和file3.cpp中對其進行聲明:
需要注意的是:鏈接屬性為external的全局變量可以聲明多次,但只能定義一次。而且,不能夠將全局變量定義在頭文件中,否在會因為頭文件被多次引用而造成變量多次定義,進而導致鏈接失敗。例如將全局變量定義在頭文件file1.h中:
將產生如下的鏈接錯誤: