charizing 运算符只能与宏的参数一起使用。 如果宏的定义中的形参前有 #@,则会在扩展宏时用单引号括起实参并将其视为一个字符。
<span style="font-size:18px;">#include <stdio.h>
#define makechar(c) #@c
#define T a
int main() {
char a = makechar(a);
printf("%d\n", a);
a = makechar(ab);
printf("%d\n",a);
a = makechar(1);
printf("%d\n", a);
a = makechar(12);
printf("%d\n", a);
a = makechar("");
printf("%d\n", a);
a = makechar("a");
printf("%d\n", a);
a = makechar(T);//宏定义无法替换
printf("%d\n", a);
const char* str = "abc";
a = makechar(stra);//最多接受4个字符
printf("%d\n", a);
}</span>