1. 预处理程序 按照ANSI 标准的定义,预处理程序应该处理以下指令: #if #ifdef #ifndef #else #elif #endif #define #undef #line #error #pragma #include 显然,上述所有的12个预处理指令都以符号#开始,,每条预处理指令必须独占一行。 2. #define #define 指令定义一个标识符和一个串(也就是字符集),在源程序中发现该标识符时,都用该串替换之。这种标识符称为宏名字,相应的替换称为宏代换。一般形式如下: #define macro-name char-sequence 这种语句不用分号结尾。宏名字和串之间可以有多个空白符,但串开始后只能以新行终止。 例如:我们使用 LEFT 代表1,用 RIGHT 代表0,我们使用两个#define 指令: #define LEFT 1 #define RIGHT 0 每当在源程序中遇到 LEFT 或 RIGHT 时,编译程序都用1或0替换。 定义一个宏名字之后,可以在其他宏定义中使用,例如: #define ONE 1 #define TWO ONE+ONE #define THREE ONE+TWO 宏代换就是用相关的串替代标识符。因此,如果希望定义一条标准错误信息时,可以如下定义: #define ERROR_MS “Standard error on input \n” 如果一个串长于一行,可在行尾用反斜线”\”续行,如下: #define LONG_STRING “This is a very very long \ String that is used as an example” 3. #error #error 指令强制编译程序停止编译,它主要用于程序调试。#error 指令的一般形式是: #error error-message 注意,宏串 error-message 不用双引号包围。遇到#error 指令时,错误信息被显示,可能同时还显示编译程序作者预先定义的其他内容。 4. #include 程序中的#include 指令要求编译程序读入另一个源文件。被读入文件的名字必须用双引号(“”)或一对尖括号(<>)包围,例如: #include “stdio.h” #include 都使 C 编译程序读入并编译头文件以用于 I/O 系统库函 数 。 包含 文件中可以包含 其他#include 指令,称为嵌 套 包含 。允 许 的最 大 嵌 套 深 度 随 编译器 而 变 。 文件名被双括号或尖括号包围决 定了 对指定文件的搜 索 方 式。文件名被尖括号包围时,搜 索按编译程序作者的定义进 行,一般用于搜 索 某 些 专 门 放 置 包含 文件的特 殊 目 录 。当文件名被双括号包围时,搜 索 按编译程序实 时的规 定进 行,一般搜 索 当前 目 录...