在对象类型宏中,可以在下面,
#define str "this is a string"
我想知道是否可以在函数类型宏中使用这种类型的字符串文字,如下所示,
#define mkstr(a) #a
#define str(s1,s2) mkstr(s1 ## s2 ## "extra")
我运行这个并得到错误,现在我想知道有没有办法在函数类型宏的替换序列中使用常量???
答案 0 :(得分:4)
是。只需将字符串放在一起:C语言接受它作为字符串常量连接。
#define str(s1,s2) s1 s2 "extra"
答案 1 :(得分:0)
我在你的例子中看到一个问题,你有两次#defined str:
#define str "this is a string"
#define mkstr(a) #a
#define str(s1,s2) mkstr(s1 ## s2 ## "extra")
尝试将其更改为:
#define str_const "this is a string"
#define str(s1,s2) s1 s2 "extra")
然后我认为你会更清楚。如果你想创建一个看起来像this is a string extra
的字符串,那么这里的宏就是用上面的宏来做的。
#define str(s1) str_const "extra"