c语言中#和##在宏定义中的使用
是在宏定义中将参数进行字符串化的预处理特征,例如:
#include <stdio.h>
#define P(EXP) printf("%s %d\n", #EXP, EXP)
int main()
{
int a=123;
P(a);
return 0;
}
预编译展开后的部分代码
#define P(EXP) printf("%s %d\n", #EXP, EXP)
int main()
{
int a=123;
printf("%s %d\n", "a", a);
return 0;
}
是连接符,用来连接变量名例如:
#include <stdio.h>
#define V(x) var##x
int main()
{
int var1=123,var2=222,var3=321;
printf("%d\n",V(1));
printf("%d\n",V(2));
printf("%d\n",V(3));
return 0;
}
预编译展开的部分代码
#define V(x) var##x
int main()
{
int var1=123,var2=222,var3=321;
printf("%d\n",var1);
printf("%d\n",var2);
printf("%d\n",var3);
return 0;
}
注意:
只能使用常量,不能使用变量的值,宏也不会进行展开操作
以下为错误操作
#include <stdio.h>
#define V(x) var##x
#define P 1
int main()
{
int var1=123,var2=222,var3=321;
printf("%d\n",V(P));
return 0;
}
#include <stdio.h>
#define V(x) var##x
int main()
{
int P=1;
int var1=123,var2=222,var3=321;
printf("%d\n",V(P));
return 0;
}
例子忘记哪里摘抄的了,如有问题立即修改或删除
浙公网安备 33010602011771号