C语言中的宏允许带有参数,包含形参和实参,在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,无参宏的宏名后不带参数,其定义的一般形式为:
#define 标识符 字符串; 例如#define m a*b;
其中ab的值就是m,在主函数中m就是调用ab;
带参宏定义的一般形式为:
#define 宏名(形参表) 字符串;
在字符串中含有各个形参。
#define y(a,b) t=a,a=b,b=t;
宏名(实参表),其中a,b就是实参,通过在主函数中输入,然后通过宏定义的预处理,也就是后面的字符串(t=a,a=b,b=t)来运算,在主函数中得到调用。
例如:定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
参考代码:
#include <stdio.h>
#define chang(a,b) t=a,a=b,b=t;
int main()
{
int a,b,t;
scanf("%d %d",&a,&b);
chang(a,b);
printf("%d %d",a,b);
return 0;
}