可以发现,即使给宏参数“传递”的数据中包含引号,使用#仍然会在两头添加新的引号,而原来的引号会被转义。
将上面的例子补充完整:
#include <stdio.h>
#define STR(s) #s
int main() {
printf("%s\n", STR(www.cdsy.xyz));
printf("%s\n", STR("www.cdsy.xyz"));
return 0;
}
运行结果:
##称为连接符,用来将宏参数或其他的串连接起来。例如有如下的宏定义:
那么:
将被展开为:
将上面的例子补充完整:
#include <stdio.h>
#define CON1(a, b) a##e##b
#define CON2(a, b) a##b##00
int main() {
printf("%f\n", CON1(8.5, 2));
printf("%d\n", CON2(12, 34));
return 0;
}
运行结果: