第九章预处理命令 ●在编译前进行预处理的特殊命令(不 是C语句) ●三种预处理功能 √宏定义 √文件包含 √条件编译
第九章 预处理命令 ⚫在编译前进行预处理的特殊命令(不 是C语句) ⚫三种预处理功能 ✓宏定义 ✓文件包含 ✓条件编译
宏定义--不带参数的宏定义 用一个指定的标识符(即名字)来代表一个字符 串(如定义符号常量)。其一般形式为: # define标识答字符串 define price 2.5 define pl 3.1415926 宏定义命令# define g98 define true 1 #define false o #define Prn printf( 大大大大大大大大大大大大大大大大大
用一个指定的标识符(即名字)来代表一个字符 串(如定义符号常量)。其一般形式为: #define 标识符 字符串 宏定义命令 宏名 宏体 #define PRICE 2.5 #define PI 3.1415926 #define G 9.8 #define TRUE 1 #define FALSE 0 #define PRN printf("*****************") 宏定义----不带参数的宏定义
例输入一个球的半径,试求球的周长、表面积 和体积。 #include <stdio.h> #define pi 3. 1415926 main( f float r, l, s, v; printf("Please intput the radius of a shere scan nf("%of", &r) 1=2.0*PI*r; s=2.0*PI**r 40/3.0*PI**r*r printf("1=%10. 4fns-=%10.4fnv=%104f, l, S,v)
例 输入一个球的半径,试求球的周长、表面积 和体积。 #include <stdio.h> #define PI 3.1415926 main() { float r,l,s,v; printf("Please intput the radius of a shere:"); scanf("%f",&r); l=2.0*PI*r; s=2.0*PI*r*r; v=4.0/3.0*PI*r*r*r; printf("l=%10.4f\ns=%10.4f\nv=%10.4f",l,s,v); }
说明 1.宏名一般习惯用大写字母表示,以便于 与变量名、关键字区分。 2.宏定义是用宏名代替一个字符串,只是 简单的置换,不作正确性检查。 3.宏定义不是C语句,不必在行末加分号。 4.宏定义的有效范围是:宏定义命令之后 直到此源文件结束。可以使用#ndef终 止其作用域
说明: 1. 宏名一般习惯用大写字母表示,以便于 与变量名、关键字区分。 2. 宏定义是用宏名代替一个字符串,只是 简单的置换,不作正确性检查。 3. 宏定义不是 C 语句,不必在行末加分号。 4. 宏定义的有效范围是:宏定义命令之后 直到此源文件结束。可以使用#undef 终 止其作用域
说明:(续) 5.在进行宏定义时,可以引用已定义的宏名, 进行层层置换 6.对程序中用双撇号括起来的字符串中的字 符,即使与宏名相同,也不进行置换 7.宏定义只作字符置换,不分配内存空间
说明: (续) 5. 在进行宏定义时,可以引用已定义的宏名, 进行层层置换。 6. 对程序中用双撇号括起来的字符串中的字 符,即使与宏名相同,也不进行置换。 7. 宏定义只作字符置换,不分配内存空间