全局變量一般這樣定義:
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 <Glbs.h>,以后調用的#i nclude <Externs.h>
另:
問:如何在VC++中使用全局變量,以使文檔中的所有類都能訪問。
答:把該變量放到該應用程序類的頭文件中的attribute處。然后,在程序的任何地方,你都可以用下面的方法來訪問該變量:
CMyApp *app=(CMyApp*)AfxGet-App();
app->MyGlobalVariable=…
用這個方法,不但可以定義全局變量,也可以定義全局對象。
例如:
MyClass MyObject;
CMyApp*app=(CMyApp*)AfxGet-App();
app->MyObject.MyFunction();
VC中使用全局變量的2種辦法及防錯措施
1. 對于全局變量存在和函數一樣的問題,為了在其他CPP文件中能夠訪問這些變量,必須在主文件的H文件中加上extern聲明,格式如下:
extern varibletype var; (聲明)
在主文件的CPP文件中定義
varibletype var; (定義)
例子:
AppWizard建立一個Test工程
那么在Test.h中聲明extern CString cs;
在Test.app定義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"
防錯措施:
若定義的函數和全局變量在多個文件包含且造成嵌套或多次調用的話,這樣將導致這個頭文件每被包含依次,函數或變量就被重新定義一次,在鏈接編譯時會導致重定義錯誤。為此需要使用一種被稱為Guard macro的技術來保證不出錯。在一個頭文件開頭加上
#ifndef _MACRO_1_
#define _MACRO_1_
在文件末尾增加
#endif