需求

需要宏来生成字符串,降低人工输入和防止出错

解决

可以使用 #, 让相应的参数作为字符串进行填充。

#define OUT(s)   fprintf(stderr, "out: " #s "/n");

OUT(div == 0);

// fprintf(stderr, "out: " "div == 0" "/n");

## 可以用来连接多个参数,减少代码生成。用法简单:

#define NAME(n) name##n

int NAME(a);

NAME(a) = 123;

printf("%d\n", NAME(a));

参考

C语言中如何使用宏连接多个字符串(#和##的用法)

C++ 宏字符串拼接、宏参数拼接成符号、宏嵌套、宏变长参数

C语言宏定义##连接符和#符的使用