VC++中全局變量、全局常量、全局結構體的定義

VC++中關於全局量的定義有兩種比較好的方法。

第一種

新建一個Generic Class類,如CGlobals。會產生一個Globals.h頭文件和一個Globals.cpp文件,在ClassView中會產生一個 CGlobals類。由於主要目的是利用產生的.h和.cpp文件,所以,將兩個文件中關於類聲明和定義的部分都刪除或註釋掉,但保留其他語句,此時 ClassView中的CGlobals類消失。

對於全局結構體定義,首先在Globals.h頭文件中構造結構體,用typedef方式,如:

typedef struct tagLineType

{

int ID;

CString Type;

double r0;

double x0;

}LINETYPE;    // 名稱可隨便

而後,在Globals.cpp文件中:

LINETYPE *lineType = NULL;    // 注意,在這裏初始化

而後,回到Globals.h頭文件:

extern LINETYPE *lineType;    // 注意,這裏不能再初始化

對於普通全局變量(如int型)定義,首先在Globals.cpp中:

int iTime = -1;    // 注意,在這裏初始化

而後,在Globals.h頭文件中:

extern int iTime;    // 注意,這裏不能再初始化

對於全局常量定義,首先再Globals.cpp中:

const int UB = 10;

而後在Globals.h頭文件中:

extern const int UB;

以上是第一種方法,是我自己總結試驗成功的。用該方法定義完畢後,無論哪個.cpp文件要用到全局變量,只需在該.cpp文件中#include "Globals.h"即可,而無需再在.cpp文件中extern,所有全局變量、全局常量、全局結構體都是可見的。該方法的總體思路是,象 theApp那樣,在.cpp中定義,在.h頭文件中extern聲明。另外要注意,變量的初始化一定在Globals.cpp文件中,而不能在 Globals.h頭文件中。

第二種

新建一個.h頭文件,如Globals.h,將所有要定義的全局變量在該頭文件種定義。而後新建另一個頭文件,如GlobalsExt.h,將所有在 Globals.h中定義的全局變量extern聲明,同樣,初始化工作要在Globals.h中進行。定義完畢後,在第一次要使用全局變量的.cpp文件中,#include "Globals.h"頭文件,在以後要使用全局變量的.cpp文件中,#include "GlobalsExt.h"頭文件。

該方法據說是一種比較規範的定義方法,網上有相關文章。但我沒有試成功過,總是提示有重複定義。而且,對於該方法下如何定義結構體亦沒有明確說明。哪位高手可以指點一下。

發佈了2 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章