您的位置:首页 > 其它

VC中怎么使用全局变量

2008-05-01 11:36 309 查看
全局变量一般这样定义: 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: