2012-06-26 51 views
1

的替换序列在对象类型宏它低于可能使用恒定,是否有可能在宏替换

#define str "this is a string" 

我想知道是否有可能使用这种类型的字符串字面的功能类型宏象下面,

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

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

回答

4

是的。只需将字符串放在一起:C语言接受该字符串常量级联。

#define str(s1,s2) s1 s2 "extra" 
0

我看到一个问题,在你的例子中,你有一个#define的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" 
相关问题