第7章预处理命令 6.习惯上宏名用大写字母表示,以便于与变量区别。但也允 许用小写字母。 7.可用宏定义表示数据类型,使书写方便。例如:# define STU Struct在程序中可用STU作变量说明: STU body[5],*p;# define INTEGER int在程序中即可用 INTEGER作整型变量说明: INTEGER ab;应注意用宏定义表示数据类型和用 typedef定义数据说 明符的区别。宏定义只是简单的字符串代换,是在预处理完成的, 而 typedef是在编译时处理的,它不是作简单的代换,而是对类型说 明符重新命名。 Back
第7章 预处理命令 6. 习惯上宏名用大写字母表示,以便于与变量区别。但也允 许用小写字母。 7. 可用宏定义表示数据类型,使书写方便。例如:#define STU struct 在程序中可用STU作变量说明:STU body[5], *p; #define INTEGER int 在程序中即可用INTEGER作整型变量说明: INTEGER a,b; 应注意用宏定义表示数据类型和用typedef定义数据说 明符的区别。宏定义只是简单的字符串代换,是在预处理完成的, 而typedef是在编译时处理的,它不是作简单的代换,而是对类型说 明符重新命名
第7章预处理命令 7.可用宏定义表示数据类型,使书写方便。例如: # define stu struct在程序中可用STU作变量说明:STU body5],*p;# define integer int在程序中即可用 INTEGER作整型变量说明:Ⅰ NTEgeR a b;应注意用宏定 义表示数据类型和用 typedef定义数据说明符的区别。宏定 义只是简单的字符串代换,是在预处理完成的,而 typedef 是在编译时处理的,它不是作简单的代换,而是对类型 说明符重新命名。 司Bac
第7章 预处理命令 7. 可用宏定义表示数据类型,使书写方便。例如: #define STU struct 在程序中可用STU作变量说明: STU body[5], *p; #define INTEGER int 在程序中即可用 INTEGER作整型变量说明: INTEGER a,b; 应注意用宏定 义表示数据类型和用typedef定义数据说明符的区别。宏定 义只是简单的字符串代换,是在预处理完成的,而typedef 是在编译时处理的,它不是作简单的代换, 而是对类型 说明符重新命名
第7章预处理命令 8.对“输出格式”作宏定义,可以减少书写麻烦 例75 #define P printf #define d%odv #define f l%ofin" main(t inta=5,c=8.e=11 float b=38,d=9.7,f=21.08; P(D F,a, b) Back PD上,e,f)
第7章 预处理命令 8. 对“输出格式”作宏定义,可以减少书写麻烦。 例7.5 #define P printf #define D "%d\n" #define F "%f\n" main(){ int a=5, c=8, e=11; float b=3.8, d=9.7, f=21.08; P(D F,a,b); P(D F,c,d); P(D F,e,f); }
第7章预处理命令 7.1.2带参宏定义 C语言允许宏带有参数。在宏定义中的参数称为形式 参数,在宏调用中的参数称为实际参数。对带参数的宏, 在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为: # define宏名(形参表)字符串 在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参表); Bac
第7章 预处理命令 7.1.2 带参宏定义 C语言允许宏带有参数。在宏定义中的参数称为形式 参数, 在宏调用中的参数称为实际参数。对带参数的宏, 在调用中,不仅要宏展开, 而且要用实参去代换形参。 带参宏定义的一般形式为: #define 宏名(形参表) 字符串 在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参表);
第7章预处理命令 例如 # efine My)y*y+3*y/宏定义* k=M(5); /*宏调用* 在宏调用时,用实参5去代替形参y,经预处理宏展开后的语 为:k=5*5+3*5 例76 #define MAX(,b)(a>b)?a: b maint Int x,y,max printf("input two numbers: ) scanf(%/od%d", &x, &y) Back
第7章 预处理命令 例如: #define M(y) y*y+3*y /*宏定义*/ k=M(5); /*宏调用*/ 在宏调用时,用实参5去代替形参y,经预处理宏展开后的语 句 为: k=5*5+3*5 例7.6 #define MAX(a,b)(a>b)?a:b main() { int x , y , max; printf("input two numbers: "); scanf("%d%d",&x,&y);