VC中使用全局变量的2种办法及防错措施
生活随笔
收集整理的這篇文章主要介紹了
VC中使用全局变量的2种办法及防错措施
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有人問特整理出來
1.
對于全局變量存在和函數一樣的問題,為了在其他CPP文件中能夠訪問這些變量,必須在主文件的H文件中加上extern聲明,格式如下:
extern?varibletype?var;
在主文件的CPP文件中定義
varibletype?var;
例子:
AppWizard建立一個Test工程
那么在Test.h中聲明extern?CString?cs;
在Test.app定義CString?cs;
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
1.
對于全局變量存在和函數一樣的問題,為了在其他CPP文件中能夠訪問這些變量,必須在主文件的H文件中加上extern聲明,格式如下:
extern?varibletype?var;
在主文件的CPP文件中定義
varibletype?var;
例子:
AppWizard建立一個Test工程
那么在Test.h中聲明extern?CString?cs;
在Test.app定義CString?cs;
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
轉載于:https://www.cnblogs.com/xcvm/archive/2005/04/08/134400.html
總結
以上是生活随笔為你收集整理的VC中使用全局变量的2种办法及防错措施的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 偶最近换了嗜睡症.
- 下一篇: u盘里不显示怎么办啊 U盘未显示,怎么办