欢迎来到天天文库
浏览记录
ID:62033984
大小:16.00 KB
页数:2页
时间:2021-04-15
《VC中全局变量定义的问题(转).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC++中全局变量的问题(转)http://blog.csdn。net/znsky/archive/2008/01/05/2026747。aspx全局变量一般这样定义:1。在一类的。cpp中定义intmyInt;然后再在要用到的地方的。cpp里externintmyInt;这样就可以用了。2。在stdafx.cpp中加入:intmyInt;然后在stdafx。h中加入:externintmyInt这样定义以后无论在什么文件中都是可见的。3。比较规范的是,先定义一个Glbs.h,把所有的全局变量原始定义放进去。然后定义一个Externs。h,把你先前定义在Glbs。h中的变量都加上ext
2、ern。注意:如果你在Glbs.h中设置了初值,那么在Externs.h中就不要加值了。然后调用时,第一次调用的#include〈Glbs.h>,以后调用的#include3、yObject; CMyApp*app=(CMyApp*)AfxGet—App(); app-〉MyObject。MyFunction();VC中使用全局变量的2种办法及防错措施1.对于全局变量存在和函数一样的问题,为了在其他CPP文件中能够访问这些变量,必须在主文件的H文件中加上extern声明,格式如下:externvaribletypevar;(声明)在主文件的CPP文件中定义varibletypevar;(定义)例子:AppWizard建立一个Test工程那么在Test。h中声明externCStringcs;在Test.app定义CStringcs;如果要定义整个工程的全4、局变量,在任何一个CPP文件中进行定义,然后在需要引用这个变量的文件中进行声明。如全局变量很多可以选择使用定义全局变量的。h文件,在需要的地方直接include头文件即可,不需要写那么多extern了.2.应用程序类的主头文件处定义变量varibletypevar,然后,在程序的任何地方,都可以用下面的方法来访问该变量: CClassApp*app=(CClassApp*)AfxGetApp(); app—>var= 类似的,以上方法也可以定义全局对象例子:AppWizard建立一个Test工程那么在Test.h中声明CStringcs;使用的时候CTestApp*app=(CTe5、stApp*)AfxGetApp();app—〉cs=”Global"防错措施:若定义的函数和全局变量在多个文件包含且造成嵌套或多次调用的话,这样将导致这个头文件每被包含依次,函数或变量就被重新定义一次,在链接编译时会导致重定义错误。为此需要使用一种被称为Guardmacro的技术来保证不出错.在一个头文件开头加上#ifndef_MACRO_1_#define_MACRO_1_在文件末尾增加#endif另外转一下一位朋友写的在MFC中定义全局变量在MFC下如何定义全局变量和全局函数VC++用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义6、能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行.实际上有多种方法可以实现,这里只介绍两种方法.一、在应用程序类中定义用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作.我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果.访问时用函数“AfxGetApp()7、”获得CxxxApp类的指针,用“AfxGetApp()-〉成员"访问变量或函数。
3、yObject; CMyApp*app=(CMyApp*)AfxGet—App(); app-〉MyObject。MyFunction();VC中使用全局变量的2种办法及防错措施1.对于全局变量存在和函数一样的问题,为了在其他CPP文件中能够访问这些变量,必须在主文件的H文件中加上extern声明,格式如下:externvaribletypevar;(声明)在主文件的CPP文件中定义varibletypevar;(定义)例子:AppWizard建立一个Test工程那么在Test。h中声明externCStringcs;在Test.app定义CStringcs;如果要定义整个工程的全
4、局变量,在任何一个CPP文件中进行定义,然后在需要引用这个变量的文件中进行声明。如全局变量很多可以选择使用定义全局变量的。h文件,在需要的地方直接include头文件即可,不需要写那么多extern了.2.应用程序类的主头文件处定义变量varibletypevar,然后,在程序的任何地方,都可以用下面的方法来访问该变量: CClassApp*app=(CClassApp*)AfxGetApp(); app—>var= 类似的,以上方法也可以定义全局对象例子:AppWizard建立一个Test工程那么在Test.h中声明CStringcs;使用的时候CTestApp*app=(CTe
5、stApp*)AfxGetApp();app—〉cs=”Global"防错措施:若定义的函数和全局变量在多个文件包含且造成嵌套或多次调用的话,这样将导致这个头文件每被包含依次,函数或变量就被重新定义一次,在链接编译时会导致重定义错误。为此需要使用一种被称为Guardmacro的技术来保证不出错.在一个头文件开头加上#ifndef_MACRO_1_#define_MACRO_1_在文件末尾增加#endif另外转一下一位朋友写的在MFC中定义全局变量在MFC下如何定义全局变量和全局函数VC++用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义
6、能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行.实际上有多种方法可以实现,这里只介绍两种方法.一、在应用程序类中定义用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作.我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果.访问时用函数“AfxGetApp()
7、”获得CxxxApp类的指针,用“AfxGetApp()-〉成员"访问变量或函数。
此文档下载收益归作者所有