C语言中#define在多行宏定义出错的原因
1.第一种错误
#include<stdio.h>
#define echange(a,b) {\/*宏定义中允许包含多行命令的情形,此时必须在最右边加上"\"*/
int t;\
t=a;\
a=b;\
b=t;\
}
main()
{
int c, d;
c = 2;
d = 3;
printf("%d %d\n", c, d);
echange(c,d)
printf("%d %d\n", c, d);
return 0;
}
在用#define进行多行宏定义时,注释要放在"\"之前
2.第二种错误
#include<stdio.h>
#define echange(a,b) {/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/\
int t;\
t=a;\
a=b;\
b=t;\
}/*在最后一行多加了一个"\"*/\
main()
{
int c, d;
c = 2;
d = 3;
printf("%d %d\n", c, d);
echange(c,d)
printf("%d %d\n", c, d);
return 0;
}
在用#define进行多行宏定义时,在最后一行加上"\“,我们使用#define进行多行定义时,默认最后一个”\“的下一行也属于宏定义范围,去掉最后一行的”\"即可
以下是代码的正确形式
#include<stdio.h>
#define echange(a,b) {/*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/\
int t;\
t=a;\
a=b;\
b=t;\
}
main()
{
int c, d;
c = 2;
d = 3;
printf("%d %d\n", c, d);
echange(c,d)
printf("%d %d\n", c, d);
return 0;
}