# 字符串化运算符
示例:
#define printDBL(exp) printf(#exp" = %f\n", exp)
----------------------------------------
printDBL(4 * atan(1.0));
输出结果为
#exp说明将 exp 字符串化 step1:printf(“4 * atan(1.0)” " = %f", 4 * atan(1.0)); // 编译器会合并紧邻的字符串字面量 step2:printf(“4 * atan(1.0) = %f”, 4 *atan(1.0));
TIPS: 1.在""内的内容才会转义 2.多个空格 -> 变为一个空格 3.\n -> 被转义从而换行 4.“hh\n” -> 输出:“hh\n” (\n不会被转义)
## 粘贴运算符
示例:
#define A_TEXT_B "hello AB!"
#define msg(x,y) puts(x##_TEXT_##y)
————————————————————————————————————————
msg(A,B);
输出结果为:
op1##op2 (条件:op1和op2中至少一个是形参) msg(A,B) -> puts(x##TEXT##y) -> puts(A_TEXT_B) -> “hello AB!”
__VA_ARGS__可变参数列表
#define showArgs(...) puts(#__VA_ARGS__)
————————————————————————————————————————
showArgs( one\n, "2\n", three);
输出结果: 相当于用 one\n, "2\n", three 替换_VA_ARGS_
注:本文是在阅读了此网站之后的一点笔记和思考。 如有错误请纠正!
|