C 语言支持预处理指令。预处理指令由预处理器来处理。预处理器会在编译源代码之前,首先处理预处理指令,根据预处理指令来完成替换、条件编译等功能。最常见的预处理指令主要有三种,分别为文件包含、条件编译和宏替换,下面分别进行介绍。
文件包含功能通过预处理指令#include "a.h" 来完成。它是一种最为常见的预处理,主要就是一个简单的替换功能,把#include "a.h"这一语句替换成整个a.h 头文件的内容。另外一种头文件的写法为#include <a.h>,不同的是不用双引号括起文件名,而是用大于小于号。大于小于号表示预处理器要从标准库路径开始搜索这个头文件。而对于双引号括起的头文件,如#include "a.h",预处理器从用户的工作路径开始搜索。所以对于标准的头文件,我们一般用大于小于号,如#include <stdio.h>;而对于自己的头文件,我们一般用双引号,如#include "zhaoyan.h"。
头文件内容的后面一定要加个分号,这也是很多人经常犯错误的一个地方。这种错误有时会造成编译器错误地理解你的程序。这种错误比较隐蔽,不太容易查出来,所以必须非常小心。这种错误具体解释起来比较复杂,我可以通过一个简单的例子来说明,那就是标点符号有的时候会改变一句话的含义。记得以前看过一个相关的故事,主人把“下雨天,留客天,天留我不留”的纸条给客人看,客人看后加了一个标点,变成了“下雨天