C++之预处理

来源:互联网 发布:vb自动登录弹出窗口 编辑:程序博客网 时间:2024/06/03 02:01

        预处理是指在进行程序编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C语言一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译。

        预处理程序(预处理器)包含在编译器中。预处理程序首先读源文件,预处理的输出是“翻译单元”,它是存放在内存中的临时文件。编译器接受预处理的输出,并把源代码转化为包含机器语言指令的目标文件。

        预处理器的作用是通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有文件包含、宏替换、条件编译和布局控制4种。

1 文件包含

        有两种格式,一种格式是#include <文件名>,这些头文件一般保存在C++的系统目录下的include子目录下,这种格式是标准方式。另一种格式是 #include "文件名",预处理器遇到这种格式的包含指令后,首先在当前文件所在目录中进行搜索,如果找不到,再按标准方式进行搜索。

2 宏替换

        #define,这是最常见的一种用法,它可以定义符号常量、函数功能、重新命名、字符串拼接等功能。

3 条件编译

        #if #ifndef #endif #undef等也是比较常见的预处理,主要是编译时进行有选择的挑选,猪是调一些指定的代码,以达到版本控制、防止对文件重复包含的功能。

4 布局控制

        #progma ,为编译程序提供非常规的控制流信息,有以下几种:

4.1 #progma warning(disable:XXX)

        在程序编译时不显示XXX警告信息

4.2 #progma comment(…)

        该指令将一个注释记录放入一个对象文件或可执行文件中。常用的lib关键字可以用于连接一个库文件,比如 #progma comment(lib,"user32.lib")指令用来将users2.lib库文件加入到工程中。

4.3 #progma once

        只要在头文件的最开加入这条指令,就能够保证头文件被编译一次。


原创粉丝点击