我希望将一个字符串字面量和字符字面值连接起来。语法不正确,"abc" 'd' "efg"
会导致编译错误:
x.c:4:24: error: expected ',' or ';' before 'd'
目前我只能使用snprift(不必要地),尽管在编译时知道了字符串字面量和字符字面值的值。
我尝试过:
#define CONCAT(S,C) ({ \
static const char *_r = { (S), (C) }; \
_r; \
})
但是它不起作用,因为 S
的空字符终止符未被剥离。(除了给编译器警告之外。)
是否有一种方法编写宏来使用
"abc" MACRO('d') "efg"
或MACRO1(MACRO2("abc", 'd'), "efg")
或MACRO("abc", 'd', "efg")
?
如果有人问为什么我需要这样做:char 文字来自库文件,我需要将字符串作为状态消息打印出来。