在对象类型宏中,可以在下面,
#define str "this is a string"
我想知道是否可以在函数类型宏中使用这种类型的字符串文字,如下所示,
#define mkstr(a) #a
#define str(s1,s2) mkstr(s1 ## s2 ## "extra")
我运行它并得到错误,现在我想知道有没有办法在函数类型宏的替换序列中使用常量???
在对象类型宏中,可以在下面,
#define str "this is a string"
我想知道是否可以在函数类型宏中使用这种类型的字符串文字,如下所示,
#define mkstr(a) #a
#define str(s1,s2) mkstr(s1 ## s2 ## "extra")
我运行它并得到错误,现在我想知道有没有办法在函数类型宏的替换序列中使用常量???
是的。只需将字符串放在一起:C 语言接受它作为字符串常量连接。
#define str(s1,s2) s1 s2 "extra"
我在您的示例中看到一个问题,因为您有两次 #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"