MFC中一些宏的说明

MFC中一些宏的说明

ID:39466182

大小:40.50 KB

页数:4页

时间:2019-07-04

MFC中一些宏的说明_第1页
MFC中一些宏的说明_第2页
MFC中一些宏的说明_第3页
MFC中一些宏的说明_第4页
资源描述:

《MFC中一些宏的说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MSC_VER  _MSC_VER定义编译器的版本。下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接)  MSVC++9.0_MSC_VER=1500  MSVC++8.0_MSC_VER=1400  MSVC++7.1_MSC_VER=1310  MSVC++7.0_MSC_VER=1300  MSVC++6.0_MSC_VER=1200  MSVC++5.0_MSC_VER=1100  其中MSVC++9.0就是VisualC++2008,MSVC++8.0就是VisualC++2005。版本名称上的的对应关系参见

2、扩展阅读中的参考文献1的链接.  在程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。例如一个版本编译器产生的lib文件可能不能被另一个版本的编译器调用,那么在开发应用程序的时候,在该程序的lib调用库中放入多个版本编译器产生的lib文件。在程序中加入_MSC_VER宏,编译器就能够在调用的时根据其版本自动选择可以链接的lib库版本,如下所示。  #if_MSC_VER>=1400//forvc8,orvc9  #ifdef_DEBUG  #pragmacomment(lib,"SomeLib-vc8-d.lib") 

3、 #elseif  #pragmacomment(lib,"SomeLib-vc8-r.lib")  #endif  #elif_MSC_VER>=1310//forvc71  #ifdef_DEBUG  #pragmacomment(lib,"SomeLib-vc71-d.lib")  #elseif  #pragmacomment(lib,"SomeLib-vc71-r.lib")  #endif  #elif_MSC_VER>=1200//forvc6  #ifdef_DEBUG  #pragmacomment(lib,"SomeLib-

4、vc6-d.lib")  #elseif  #pragmacomment(lib,"SomeLib-vc6-r.lib")  #endif  #endif  本编辑词条参考自扩展阅读中的链接。关于_MSC_VER更详细的说明请点击阅读扩展阅读中的参考文献3,4的链接。于AFX_NOVTABLE的说明2010-06-0410:54   今天在看MFC的源代码时,发现基类CObject的定义是如下形式:#ifdef_AFXDLLclassCObject#elseclassAFX_NOVTABLECObject#endif_AFXDLL是什么东西呢,

5、从网上搜索了一下,发现当新建工程时选择UseMFCinaSharedDLL,则在工程的预编译参数Preprocessordefinitions中会自动加入_AFXDLL宏定义,而如果在新建工程时选择UseMFCinaStaticLibrary则不会添加该宏定义,这时基类CObject的定义变为classAFX_NOVTABLECObject,而AFX_NOVTABLE宏定义又有什么用途呢?继续追踪该宏的定义发现:#ifndefAFX_NOVTABLE#if_MSC_VER>=1100&&!defined(_DEBUG)#defineAFX_NO

6、VTABLE__declspec(novtable)#else#defineAFX_NOVTABLE#endif#endif_MSC_VER用于说明编译器的版本,如MSVC++6.0_MSC_VER=1200,MSVC++5.0_MSC_VER=1100,即当工程编译版本不是debug版本时,宏AFX_NOVTABLE相当于__declspec(novtable),__declspec(novtable)主要是为了减少release版本的最终目标文件的大小,其具体含义可以参考我的另一篇文章:C++中_declspec(novtable)的探讨。

7、   总体上来说对CObject类定义时的一系列修饰是想在以UseMFCinaStaticLibrary方式生成文件时尽量减小文件的大小。C++中_declspec(novtable)的探讨2010-04-1417:40(1)VTABLE(虚函数表)和VPTR(指向虚函数标的指针)的区别编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。编译器对每个包含虚函数的类创建一个表(称为VTABLE)。在VTABLE中,编译器放置特定类的虚函数地址。在每个带有虚函数的类中,编译器秘密地置一指针,称为vpointer(缩写为VPTR),指向这个对象

8、的VTABLE。通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入取得这个VPTR,并在VTABLE表中查找函数地址的代码,这样就能调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。