1 / 10
文档名称:

VC预处理指令和宏定义.doc

格式:doc   大小:30KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VC预处理指令和宏定义.doc

上传人:花花世界 2019/3/1 文件大小:30 KB

下载得到文件列表

VC预处理指令和宏定义.doc

相关文档

文档介绍

文档介绍:刚接触到MFC编程的人往往会被MFC向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具。使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能。一个经典的例子使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译。试想这种的情况,,,现在有一个CPP文件,:#include“”#include“”。intiglobal; 在编译的时候编译器两次编译headerfile,也就会发现iglobal被定义了两次,这时就会发生变量重定义的编译错误。传统的解决办法是使用#ifdef以及#endif来避免头文件的重复编译,在上面的例子中,只需要加上这么几行:#ifndefsmartnose_2002_6_21_headerfile_h#definesmartnose_2002_6_21_headerfile_hintiglobal;#endif 仔细的考虑上面的宏定义,,smartnose_2002_6_21_headerfile_h这个宏就被定义了,。当然smartnose_2002_6_21_headerfile_h这个宏是可以任意定义的,但是这个宏本身不能和其它文件中定义的宏重复,所以MFC在自动生成的文件中总是使用一个随机产生的长度非常长的宏,但我觉得这没有必要,我建议在这个宏中加入一些有意义的信息,比方作者,文件名,文件创建时间等等,因为我们有时候会忘记在注释中加入这些信息。中我们不会再看见这些宏定义了,因为在这里会普遍使用一个预处理指令:#pragmaonce 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用它。源代码版本控制当我们为许多平台开发多个版本的时候预编译指令和宏定义也能够帮我们的忙。假设我们现在为Windows和Linux开发了一套软件,由于这两种系统的不同,我们不得不在程序控制源代码的版本。比方内存的分配,我们可以在LINUX上使用标准C的malloc函数,但是我们希望在Windows上使用HeapAllocAPI。下面的代码演示了这种情况:main(){………………..#ifdef_WINDOWS_PLATFORMHeapAlloc(5);#elsemalloc(5);#endif………………..} 当我们在WINDOWS平台上编译此程序的时候,只需要定义_WINDOWS_PLATFORM这个宏,那么HeapAlloc这条语句就能够起作用了。这样就能够让我们在同一个文件中为不同的平台实现不同版本的代码,同时保持程序的良好结构。在许多情况下,我们还可以为一个方法使用不同的算法,然后用宏定义来针对不同的情况选择其中的一个进行编译。这在MFC应用程序中是使用得最多的