C语言带参数的宏定义
发布时间:2023-05-17 13:54:24 所属栏目:语言 来源:
导读:C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。
对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参
对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。 带参宏调用的一般形式为: 宏名(实参列表); 例如: #define M(y) y*y+3*y //宏定义 // TODO: k=M(5); //宏调用 在宏展开时,用实参 5 去代替形参 y,经预处理程序展开后的语句为k=5*5+3*5。 【示例】输出两个数中较大的数。 #include <stdio.h> #define MAX(a,b) (a>b) ? a : b int main(){ int x , y, max; printf("input two numbers: "); scanf("%d %d", &x, &y); max = MAX(x, y); printf("max=%d\n", max); return 0; } 运行结果: input two numbers: 10 20 max=20 程序第 2 行定义了一个带参数的宏,用宏名MAX表示条件表达式(a>b) ? a : b,形参 a、b 均出现在条件表达式中。程序第 7 行max = MAX(x, y)为宏调用,实参 x、y 将用来代替形参 a、b。宏展开后该语句为: max=(x>y) ? x : y; (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |