刚接触到mfc编程的人往往会被mfc target=_blank
11页1、刚接触到刚接触到 MFCMFC 编程的人往往会被编程的人往往会被 MFCMFC target=_blanktarget=_blank刚接触到 MFC 编程的人往往会被 MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是 C 语言的一个强大工具。使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能。一个经典的例子使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译。试想这种的情况,有一个文件 headerfile.h它被包含在 headerfile1.h 中,同时在 headerfile2.h 中也被包含了,现在有一个 CPP 文件,implement.cpp 包含了headerfile1.h 和 headerfile2.h:#include “headerfile1.h“#include “headerfile2.h“假设 headerfile.h 中定义了一个全局变量 iglobal 。int iglobal; 在编译的时候编译器两次编译 headerfile,也就会发现iglobal 被定义了两次,这时就会发生变量重定义的
2、编译错误。传统的解决办法是使用#ifdef 以及#endif 来避免头文件的重复编译,在上面的例子中,只需要加上这么几行:#ifndef smartnose_2002_6_21_headerfile_h#define smartnose_2002_6_21_headerfile_hint iglobal;#endif仔细的考虑上面的宏定义,会发现当编译器编译过一次headerfile.h 以后,smartnose_2002_6_21_headerfile_h 这个宏就被定义了,以后对 headerfile.h 的编译都会跳过 int iglobal 这一行。当然 smartnose_2002_6_21_headerfile_h 这个宏是可以任意定义的,但是这个宏本身不能和其它文件中定义的宏重复,所以 MFC 在自动生成的文件中总是使用一个随机产生的长度非常长的宏,但我觉得这没有必要,我建议在这个宏中加入一些有意义的信息,比方作者,文件名,文件创建时间等等,因为我们有时候会忘记在注释中加入这些信息。在 VC.Net 中我们不会再看见这些宏定义了,因为在这里会普遍使用一个预处理指令:#pr
3、agma once只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在 VC6 中就已经有了,但是考虑到兼容性并没有太多的使用它。源代码版本控制当我们为许多平台开发多个版本的时候预编译指令和宏定义也能够帮我们的忙。假设我们现在为 WINDOWS 和 LINUX 开发了一套软件,由于这两种系统的不同,我们不得不在程序控制源代码的版本。比方内存的分配,我们可以在 LINUX 上使用标准 C 的 malloc 函数,但是我们希望在 WINDOWS 上使用 HeapAlloc API。下面的代码演示了这种情况:main().#ifdef _WINDOWS_PLATFORMHeapAlloc(5);#elsemalloc(5);#endif.当我们在 WINDOWS 平台上编译此程序的时候,只需要定义_WINDOWS_PLATFORM 这个宏,那么 HeapAlloc 这条语句就能够起作用了。这样就能够让我们在同一个文件中为不同的平台实现不同版本的代码,同时保持程序的良好结构。在许多情况下,我们还可以为一个方法使用不同的算法,然后用宏定义来针对不同的情况选择其中的一个进行
4、编译。这在 MFC 应用程序中是使用得最多的。最明显的就是文件中经常存在的#ifdef _DEBUG.some code.#endif这样的代码,这些代码在应用程序的调试版(DEBUG)中会发挥其作用。#Pragma 指令在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。其格式一般为#Pragma Para其中 Para 为参数,下面来看一些常用的参数。message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#Pragma message(“消息文本“)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86 这个宏可以用下面的方法#ifdef _X86#Pragma message(“_X86 macro act
《刚接触到mfc编程的人往往会被mfc target=_blank》由会员kms****20分享,可在线阅读,更多相关《刚接触到mfc编程的人往往会被mfc target=_blank》请在金锄头文库上搜索。
高三文科数学(长方体模型1)
高一生物:必修2 1.1孟德尔的豌豆杂交实验
遗传学第1章 绪言
高等代数课件--第三章 线性方程组§3.3 线性相关性
高二数学(1.1-1空间几何体及棱柱、棱锥的结构特征)
递回关系与演算法分析
过程是vb的基本组成单位
营养器官的生长
细菌真菌在生物圈中的作用课件(济南版七年级上)
自动化-ab变频器的原理及其应用
网络操作系统-第16章 windows server 2003安全管理
网络安全+第4讲+防火墙
素材-接触网施工技术-双线隧道吊柱安装
系统结构第5章
计算机体系结构实验2008
计算机系统安全
高考词汇总常用词v
软件测试tmap
电脑文件被删除怎么恢复图文教程
电子教案--第9章
2023-02-16 10页
2024-01-06 7页
2022-12-15 2页
2023-04-12 3页
2022-07-24 14页
2023-01-10 10页
2022-11-21 4页
2023-01-22 3页
2022-10-30 10页
2022-11-27 2页