c语言
允许宏带有参数。
在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏, 在调用中,不仅要宏展开,而且要用实参去代换形参。
带参宏定义的一般形式为:
#define 宏名(形参) 表达式
在表达式中含有各个形参。
带参宏调用的一般形式为:
宏名(形参)
例如:
#define M(y) ((y)*(y)+3*(y))
....
k=M(5);
....
在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为: k=5*5+3*5
程序2:
#define MAX(a,b) (a>b)?a:b
main()
{
int x,y,max;
printf("input two numbers: ");
scanf("%d%d",&x,&y);
max=MAX(x,y);
printf("max=%d\n",max);
}
上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式(a>b)?a:b,
形参a,b均出现在条件表达式中。程序第七行max=MAX(x,y)为宏调用,实参x,y,
将代换形参a,b。
宏展开后该语句为:
max=(x>y)?x:y;
用于计算x,y中的大数。
在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏, 在调用中,不仅要宏展开,而且要用实参去代换形参。
带参宏定义的一般形式为:
#define 宏名(形参) 表达式
在表达式中含有各个形参。
带参宏调用的一般形式为:
宏名(形参)
例如:
#define M(y) ((y)*(y)+3*(y))
....
k=M(5);
....
在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为: k=5*5+3*5
程序2:
#define MAX(a,b) (a>b)?a:b
main()
{
int x,y,max;
printf("input two numbers: ");
scanf("%d%d",&x,&y);
max=MAX(x,y);
printf("max=%d\n",max);
}
上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式(a>b)?a:b,
形参a,b均出现在条件表达式中。程序第七行max=MAX(x,y)为宏调用,实参x,y,
将代换形参a,b。
宏展开后该语句为:
max=(x>y)?x:y;
用于计算x,y中的大数。