what does the #include preprocessor directive do

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:42:17

preprocessor directive (预处理命令)

预处理命令不是C语言本身的组成部分,不能直接对它们进行编译(编译程序不能识别它们)。所以必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”。
C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。

C提供的预处理功能主要有以下三种:
1.宏定义
2.文件包含
3.条件编译
为了与一般的C语句相区别,这些命令以符号"#"开头。

1.宏定义:
[不带参数的宏定义]:用一个指定的标识符来代表一个字符串。其一般形式为:
#define 标识符 字符串
如: #define PI 3.1415926
把这个标识符称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”。#define为宏定义命令。
宏名一般习惯用大写字母表示,以便与变量名相区别。
宏定义是用宏名字代替一个字符串,也就是做简单的置换,不做正确性检查。预编译时不做任何语法检查。
宏定义不是C语句,不必在行末加分号。否则,会连分号一起进行置换。
可以使用 #undef 命令终止宏定义的作用域。
在进行宏定义时,可以引用已定义的宏名,可以层层置换。
对程序中用双括号括起来的字符串内的字符,即使与宏名相同,也不进行置换。
宏定义只做字符替换,不分配内存空间。
[带参数的宏定义]:不是进行简单的字符替换,还要进行参数替换。其一般形式为:
#define 宏名(参数表) 字符串
如: #define S(a,b) a*b
宏定义时,在宏名与带参数的括号之间不应加空格,否则将空格以后的字符都作为替代字符串的一部分。
一般用宏来代表简短的表达式