C语言带参数的宏定义:定义宏名时可以不写出参数???

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:37:33
用带参数的宏求出两个数中的大数:
#define N(x,y) x>y?x:y
main()
{int max,x,y;
printf("input:");
scanf("%d%d",&x,&y);
max=N(x,y);
printf("%d",max);}
程序如上可以
但如果定义时不带参数也可以:
#define N x>y?x:y
main()
{int max,x,y;
printf("input:");
scanf("%d%d",&x,&y);
max=N;
printf("%d",max);}
难道C语言带参数的宏定义:定义宏名时可以不写出参数???为什么不用写出呢????

我想你搞混了 宏有带参数的定义也有不带参数的 不带参数的直接替代 有参数的是把参数也代替 就你这个题目来说 不管按那种方式都可以实现 因为你的宏就是实现一次
但是有的是必须用参数的,比如你这个题目改一下 我再比较x和z的大小 可以用N(x,z)但是你第二题显然无能为力了

宏只是一个替代啊 不做参数检查的 所以带不带参数他都不能识别的啊
他只是完全的替代你定义的内容的