1

在对象类型宏中,可以在下面,

#define str "this is a string"

我想知道是否可以在函数类型宏中使用这种类型的字符串文字,如下所示,

#define mkstr(a) #a
#define str(s1,s2) mkstr(s1 ## s2 ## "extra")

我运行它并得到错误,现在我想知道有没有办法在函数类型宏的替换序列中使用常量???

4

2 回答 2

4

是的。只需将字符串放在一起:C 语言接受它作为字符串常量连接。

#define str(s1,s2)   s1 s2 "extra"
于 2012-06-26T09:46:03.333 回答
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"
于 2012-06-26T11:21:59.480 回答