Hinc lude <math. hx 第六章 tdefine EPs void main doub 户有定义函数原型说明 scan pI %f% doub In double term. while( fab n=n+1 信息科学技术学院C语言程序设计教学组
C Programming Language>第六章 第六章预处理 内容提要 宏定义概念与定义形式 宏定义 宏定义与函数调用的区别 宏与函数的区别 文件包含 文件包含 条件编译 >条件编译 U≤ lin( ustc, o(Lcnb
第六章 预处理 ★ 内容提要: 宏定义概念与定义形式 宏定义与函数调用的区别 文件包含 条件编译 ➢ 宏定义 ➢ 宏与函数的区别 ➢ 文件包含 ➢ 条件编译
C Programming Language>第六章 第六章预处理 编译时预处理是c语言区别于其它高级语 □的特征之一,即在通常的编译(包括词法、 语法、代码生成、优化等)之前,先对程序 中的特殊命令进行“预处理”,然后再进行编 译。 预处理功能主要有三种 (1宏定义;(2)文件包含;(3)条件编译。 U≤ lin( ustc, o(Lcnb
编译时预处理是C语言区别于其它高级语言 的特征之一, 即在通常的编译( 包括词法、 语法、代码生成、优化等 )之前,先对程序 中的特殊命令进行“预处理”,然后再进行编 译。 ⑴宏定义; 预处理功能主要有三种: ⑵文件包含;⑶条件编译。 第六章 预处理
C Programming Language>第六章 91宏定义 宏定义就是用一个宏名代替一个字符 □串,以简化编程,提高程序的可读性; 宏定义的一般格式: # define宏名替换字符串 注意:宏名必须定义在前引用在后, 其后不要加 6699 号。 U≤ lin( ustc, o(Lcnb
9.1 宏定义 #define 宏名 替换字符串 宏定义的一般格式: 宏定义就是用一个宏名代替一个字符 串,以简化编程,提高程序的可读性; 注意:宏名必须定义在前引用在后, 其后不要加“;”号
C Programming Language>第六章 宏定义的一般格式 # define宏名替换字符串 宏定义指令的最终作用是要求预编译器 在源程序中寻找宏名,并将所有的这些 “宏名”用“替换字符串”替换 U≤ lin( ustc, o(Lcnb
宏定义指令的最终作用是要求预编译器 在源程序中寻找宏名,并将所有的这些 “宏名”用“替换字符串”替换。 #define 宏名 替换字符串 宏定义的一般格式:
C Programming Language>第六章 [例9-1]:求圆面积编程。 说明 0宏名习惯用大写表 #define pl 3.1415926 与变量区别 t definer 3.0 e宏定义就是用一个 #define s piar*R 宏名代替一个字符串 ,以简化编程; void minot 6对宏定义的预处理 printf(area=%of\n",S); 就是作逆向的置换 预编译后可以层层置换,先 定义的可被后者引用 void maine printf" area--yfn",3.1415926*30*3.0); US biia( usic duL cng
C Programming Language>第六章 [例9-1]:求圆面积编程。 #define pi 3.1415926 运行结果: #definer.0 area=28.274333 define s3.1415926÷3.0=3.0 void minot printf(area=%f\n",S); 后 void maine printf" area--yfn",3.1415926*30*3.0); US biia( usic duL cng
运行结果: area=28.274333
C Programming Language>第六章 92带参的宏定义 不仅可以进行简单的字符替换,还可以进行 □参数替换,改参数可以是表达式。 带参宏定义的一般格式 # define宏名(参数)替换字符串 说明:相应实参可以是较复杂的表达式,此时为得到 正确的结果,应当在替换字符串的形式参数外面加上 一个括号。宏名与带参数的括号之间不应加空格,非 则将出错 U≤ lin( ustc, o(Lcnb
9.2 带参的宏定义 说明:相应实参可以是较复杂的表达式,此时为得到 正确的结果,应当在替换字符串的形式参数外面加上 一个括号。宏名与带参数的括号之间不应加空格,非 则将出错。 不仅可以进行简单的字符替换,还可以进行 参数替换,改参数可以是表达式。 #define 宏名(参数) 替换字符串 带参宏定义的一般格式: #define 宏名(参数) 替换字符串 带参宏定义的一般格式:
C Programming Language>第六章 [例92]:求圆面积编程。 运行结果: #define pl 3.1415926 area=40.715040 #define s(r) Pl*r*r void minot double a=3. 6. area: area=S(a) printf(area=%ofn", area) 预编 后 void minot double a=3.6. area area=3.1415926aa; printf("area=%f\n", area); US biia( usic duL cng
运行结果: area=40.715040
C Programming Language>第六章 [例92]:求圆面积编程。 运行结果 #define pl 3.1415926 area=40.715040 #define s(r) 3.1415926*a*a void minot double a=3. 6. area: area=S(a) printf(area=%of\n", area); 预编 后 void minot double a=3.6. area area=3.1415926aa; printf("area=%f\n", area); US biia( usic duL cng