二级C语言考试辅导教程第九章:预处理
http://tech.ddvip.com 2007年12月08日 社区交流 收藏本文
二级C语言考试辅导教程第九章:预处理。
8. 对“输出格式”作宏定义,可以减少书写麻烦。例9.3 中就采用了这种方法。
以下是引用片段:
#definePprintf
#defineD"%d
"
#defineF"%f
"
main(){
inta=5,c=8,e=11;
floatb=3.8,d=9.7,f=21.08;
P(DF,a,b);
P(DF,c,d);
P(DF,e,f);
}
带参宏定义
C语言允许宏带有参数。在宏定义中的参数称为形式参数, 在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开, 而且要用实参去代换形参。
带参宏定义的一般形式为: #define 宏名(形参表) 字符串 在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参表);
例如:
#define M(y) y*y+3*y /*宏定义*/
:
k=M(5); /*宏调用*/
: 在宏调用时,用实参5去代替形参y, 经预处理宏展开后的语句
为: k=5*5+3*5
以下是引用片段:
#defineMAX(a,b)(a>b)?a:b
main(){
intx,y,max;
printf("inputtwonumbers:");
scanf("%d%d",&x,&y);
max=MAX(x,y);
printf("max=%d
",max);
}
上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式(a>b)?a:b,形参a,b均出现在条件表达式中。程序第七行max=MAX(x,
y)为宏调用,实参x,y,将代换形参a,b。宏展开后该语句为: max=(x>y)?x:y;用于计算x,y中的大数。对于带参的宏定义有以下问题需要说明:
1. 带参宏定义中,宏名和形参表之间不能有空格出现。
来源:豆豆网转载 作者:天极网 责编:豆豆技术应用