人民邮电出版3 第十一章(语言的预处理器
人民邮电出版社 第十一章 C语言的预处理器
人民邮电出版3 1宏定义和宏替换 112文件包含 13条件编译
人民邮电出版社 11.1 宏定义和宏替换 11.2 文件包含 11.3 条件编译
人民邮电出版3 111宏定义和宏替换 所有的预处理命令都是以符号“#”开头的。 宏定义以# define开头。宏定义可分为不带参数 的宏定义和带参数的宏定义两类
人民邮电出版社 11.1 宏定义和宏替换 所有的预处理命令都是以符号“#”开头的。 宏定义以#define开头。宏定义可分为不带参数 的宏定义和带参数的宏定义两类
人民邮电出版3 1带参数的宏定义 不带参数的宏定义是用一个用户指定的,称 为宏名的标识符,来代表一个字符串。这种定义 的一般形式为: # define宏名字符串 宏定义的作用是,宏名后面的字符串,在程 序中可用相应的宏名来代替
人民邮电出版社 11.1.1 不带参数的宏定义 不带参数的宏定义是用一个用户指定的,称 为宏名的标识符,来代表一个字符串。这种定义 的一般形式为: #define 宏名 字符串 宏定义的作用是,宏名后面的字符串,在程 序中可用相应的宏名来代替
人民邮电出版3 112带参数的宏定义 宏名还可以带参数。这时的宏替换,既进 行字符串的替换,又进行参数的替换。带参数 的宏名还可以接受表达式的值,并赋给普通变 量,就好象函数调用似的。 带参数的宏定义的一般形式为: # define宏名(参数)字符串 人在字符串中也要包含着宏名定义的使用参数
人民邮电出版社 11.1.2 带参数的宏定义 宏名还可以带参数。这时的宏替换,既进 行字符串的替换,又进行参数的替换。带参数 的宏名还可以接受表达式的值,并赋给普通变 量,就好象函数调用似的。 带参数的宏定义的一般形式为: #define 宏名(参数) 字符串 在字符串中也要包含着宏名定义的使用参数
人民邮电出版3 (1)函数调用时,要计算实参并向形参传送。 (2)函数中的实参和形参有确定的数据类型,并且两 者是一一对应的。 (3)宏是在编译时进行替换的,不分配内存空间。 (4)宏替换是不占程序的运行时间的,只占编译时间
人民邮电出版社 (1)函数调用时,要计算实参并向形参传送。 (2) 函数中的实参和形参有确定的数据类型,并且两 者是一一对应的。 (3) 宏是在编译时进行替换的,不分配内存空间。 (4) 宏替换是不占程序的运行时间的,只占编译时间
人民邮电出版3 12文件包含 所谓文件包含,是指一个源文件将另一个源 文件包含到自己的文件之中。实现文件包含的预处 理命令是# nclude。如我们经常用到的: #include 这个命令通知编译程序,把命令中指定的源程 序(如 Stdio. h)包括进来。 人文件包含命令的一般形式有如下两种: include include"文件名
人民邮电出版社 11.2 文件包含 所谓文件包含,是指一个源文件将另一个源 文件包含到自己的文件之中。实现文件包含的预处 理命令是#include。如我们经常用到的: #include 这个命令通知编译程序,把命令中指定的源程 序(如stdio.h)包括进来。 文件包含命令的一般形式有如下两种: #include #include "文件名
人民邮电出版3 13条件编译 对源程序要整个进行编译。但有时也需要根 据具体条件编译源程序的某些部分。这种编译称 ②为条件编译
人民邮电出版社 11.3 条件编译 对源程序要整个进行编译。但有时也需要根 据具体条件编译源程序的某些部分。这种编译称 为条件编译
人民邮电出版3 113.1#if#end类型的条件编译命令 1. #if #endif: 此命令的一般形式为: 常数表达式 程序段 #endif 如果常数表达式为真,则编译i后面的程序段 (语句块);否则就不编译,跳过这段程序
人民邮电出版社 11.3.1 #if_#endif类型的条件编译命令 1. #if_#endif: 此命令的一般形式为: #if 常数表达式 程序段 #endif 如果常数表达式为真,则编译if后面的程序段 (语句块);否则就不编译,跳过这段程序
人民邮电出版3 2. #if #else fendi 此命令的一般形式为: if常量表达式 程序段1 #else 程序段2 #endif
人民邮电出版社 2. #if_#else_#endif 此命令的一般形式为: #if 常量表达式 程序段1 #else 程序段2 #endif