全域變數一般這樣定義: 1。在一類的.cpp中定義 int myInt; 然後再在要用到的地方的.cpp裡extern int myInt;這樣就可以用了。 2。在stdafx.cpp中加入: int myInt; 然後在stdafx.h中加入: extern int myInt 這樣定義以後無論在什麼檔案中都是可見的. 3。比較規範的是,先定義一個Glbs.h,把所有的全域變數原始定義放進去。然後定義一個Externs.h,把你先前定義在Glbs.h中的變數都加上extern。 注意:如果你在Glbs.h中設定了初值,那麼在Externs.h中就不要加值了。然後調用時,第一次調用的#include "Glbs.h ",以後調用的#include "Externs.h " ====================================================================== VC中使用全域變數的2種辦法及防錯措施 1. 對於全域變數存在和函數一樣的問題,為了在其他CPP檔案中能夠訪問這些變數,必須在主檔案的H檔案中加上extern聲明,格式如下: extern varibletype var; (聲明) 在主檔案的CPP檔案中定義 varibletype var; (定義) 例子: AppWizard建立一個Test工程 那麼在Test.h中聲明extern CString cs; 在Test.cpp定義CString cs; 如果要定義整個工程的全域變數,在任何一個CPP檔案中進行定義,然後在需要引用這個變數的檔案中進行聲明。如全域變數很多可以選擇使用定義全域變數的.h檔案, 在需要的地方直接include標頭檔即可,不需要寫那麼多extern了。 2.應用程式類的主標頭檔處定義變數varibletype var,然後,在程式的任何地方,都可以用下面的方法來訪問該變數: CClassApp *app=(CClassApp*)AfxGetApp(); app-> var= 類似的,以上方法也可以定義全域對象 例子: AppWizard建立一個Test工程 那麼在Test.h中聲明CString cs; 使用的時候CTestApp *app = (CTestApp*)AfxGetApp(); app-> cs= "Global " 防錯措施: 若定義的函數和全域變數在多個檔案包含且造成嵌套或多次調用的話,這樣將導致這個標頭檔每被包含一次,函數或變數就被重新定義一次,在連結編譯時間會導致重定義錯誤。 為此需要使用一種被稱為Guardmacro的技術來保證不出錯。在一個標頭檔開頭加上 #ifndef _MACRO_1_ #define _MACRO_1_ 在檔案末尾增加 #endif ============================================================= 做兩個標頭檔:global.h, globalExt.h 在global.h中: #ifndef _GLOBAL_H_ #define _GLOBAL_H_ //變數定義 int nTest; float fTest; #endif