2015-11-04 60 views
4

因此,当考虑让我的定义宏工作,我发现了###宏助手,并用它们来简化我的宏。宏的关键部分将变量设置为包含变量名称的字符串(但不包括变量名称)。作为一个简单的例子,我们来看一个名为SET(X)的宏,它应该将SET(something)扩展为something = "pre_something"是否有一个宏的前缀和引用C宏参数的一个宏的方法

到目前为止,我发现的唯一方法是使用两个宏,如#define QUOTE(X) #X#define SET(X) X = QUOTE(pre_##X)。但是,使用多个宏看起来过多,并且可能会导致进一步的宏扩展(我认为)出现问题。是否有一种更干净,单线的做同样的事情?

回答

4

#define SET(x) x = "pre_"#x

Ç确实字符串连接在编译时,于是两个字符串文字彼此相邻是级联。

"hello " "world" - >"hello world"