关于宏定义的说明: 令1、一般宏名用大写字母表示。(变量名一般用小写字母) 2、使用宏可以提高程序的可读性和可移植性。如上述程序中, 多处需要使用π值,用宏名既便于修改又意乂明确 3、宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检 查语法。语法检查在编译时进行。 令4、宏定义不是C语句,后面不能有分号。如果加入分号,则连分 号一起替换。 如 .#define pi3. 14 15926 o area= Pr 在宏扩展后成为 area=3.1315926;*r*r 结果,在编译时出现语法错误。 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 关于宏定义的说明: ❖ 1、一般宏名用大写字母表示。(变量名一般用小写字母)。 ❖ 2、使用宏可以提高程序的可读性和可移植性。如上述程序中, 多处需要使用π值,用宏名既便于修改又意义明确。 ❖ 3、宏定义是用宏名代替字符串,宏扩展时仅作简单替换,不检 查语法。语法检查在编译时进行。 ❖ 4、宏定义不是C语句,后面不能有分号。如果加入分号,则连分 号一起替换。 ❖ 如: ❖ #define PI 3.1415926; ❖ area = PI*r*r; ❖ 在宏扩展后成为: ❖ area = 3.1315926;*r*r; ❖ 结果,在编译时出现语法错误
关于宏定义的说明: 5、通常把#defi命令放在一个文件的开头,使其在本 文件全部有效。 6、宏定义终止命令#mde结束先前定义的宏名。 令# define g9.8 今main() # under/取消G的意义 今1() 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 关于宏定义的说明: ❖ 5、通常把#define命令放在一个文件的开头,使其在本 文件全部有效。 ❖ 6、宏定义终止命令 #undef结束先前定义的宏名。 ❖ #define G 9.8 ❖ main( ) ❖ { ❖ } ❖ #undef G /* 取消G的意义*/ ❖ f1( ) ❖ { ❖ ┆ ❖ }
例92宏代换 #define f x+ main() int x=4, y=5 if(x ++<y z=2*f else z=f/2 printf("n%od,z) 结果请选择: (A)20(B)15(C)18()4 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 例9.2 宏代换 #define f x+y main( ) { int x=4, y=5, z; if(x ++ < y) z=2*f; else z=f / 2; printf(“\n%d”,z); } 结果请选择: (A)20 (B) 15 (C) 18 (D) 4
带参数的宏 一般形式 # define宏名(参数表)字符串 令带参数的宏在展开时,不是进行简单的 字符串替换,而是进行参数替换。例、 #define S(a,b)a 其中*保留 area=S(3,2)得3#2 上一页下一页 返回
上一页 下一页 返回 第九章 编译预处理 二、带参数的宏 ❖ 一般形式: ❖ #define 宏名(参数表) 字符串 ❖ 带参数的宏在展开时,不是进行简单的 字符串替换,而是进行参数替换。例