全域性變數一般這樣定義:
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中就不要加值了。然後呼叫時,第一次呼叫的#i nclude ,以後呼叫的#i nclude
另:問:如何在vc++中使用全域性變數,以使文件中的所有類都能訪問。
答:把該變數放到該應用程式類的標頭檔案中的attribute處。然後,在程式的任何地方,你都可以用下面的方法來訪問該變數:
用這個方法,不但可以定義全域性變數,也可以定義全域性物件。
例如:myclass myobject;
vc中使用全域性變數的2種辦法及防錯措施
1. 對於全域性變數存在和函式一樣的問題,為了在其他cpp檔案中能夠訪問這些變數,必須在主檔案的h檔案中加上extern宣告,格式如下:
extern varibletype var; (宣告)
在主檔案的cpp檔案中定義
varibletype var; (定義)
例子:那麼在test.h中宣告extern cstring cs;
如果要定義整個工程的全域性變數,在任何乙個cpp檔案中進行定義,然後在需要引用這個變數的檔案中進行宣告。如全域性變數很多可以選擇使用定義全域性變數的。h檔案,在需要的地方直接include標頭檔案即可,不需要寫那麼多extern了。
2.應用程式類的主標頭檔案處定義變數varibletype var,然後,在程式的任何地方,都可以用下面的方法來訪問該變數:
類似的,以上方法也可以定義全域性物件
例子:那麼在test.h中宣告 cstring cs;
防錯措施:
若定義的函式和全域性變數在多個檔案包含且造成巢狀或多次呼叫的話,這樣將導致這個標頭檔案每被包含依次,函式或變數就被重新定義一次,在鏈結編譯時會導致重定義錯誤。為此需要使用一種被稱為guard macro的技術來保證不出錯。在乙個標頭檔案開頭加上
#ifndef _macro_1_
#define _macro_1_
在檔案末尾增加
#endif
全域性變數的使用
什麼是全域性變數呢?我們知道,全域性變數是這樣的變數,他們能夠在這個程式中的任何位置都被使用,也就是說,不管是main函式中,還是我們自己寫出來的函式中,都可以無條件的使用他們,雖然這對於我們看來很是方便,但是他隱含的卻違背了結構化的程式設計思想,所以在我們程式化的設計過程中,應該少用全域性變數。在...
static全域性變數 全域性變數
1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...
matlab 使用全域性變數
全域性變數 global variable 是變數的一種型別,區別於區域性變數。若將乙個變數宣告為全域性變數,則它所佔的記憶體為全域性記憶體,而不是本地工作區記憶體。因此全域性變數就可以被所有工作區訪問,修改。在函式間共用全域性變數 定義兩個函式檔案,setglobalx和getglobalx 設定...