是否有一种单宏方法来为 C 宏参数添加前缀和引号

Is there a one-macro way to prefix and quote C macro argument

因此,在考虑让我的定义宏工作时,我找到了 ### 宏助手,并使用它们来简化我的宏。宏的关键部分将变量设置为包含变量名称(但不是单独的变量名称)的字符串。作为一个简化的例子,让我们以一个名为 SET(X) 的宏为例,它应该将 SET(something) 扩展为 something = "pre_something".

到目前为止,我发现的唯一方法是使用两个宏,如 #define QUOTE(X) #X#define SET(X) X = QUOTE(pre_##X)。但是,使用多个宏似乎过度了,并且可能会导致进一步的宏扩展出现问题(我认为)。有没有更简洁的单行方式来做同样的事情?

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

C 在编译时进行字符串连接,因此两个相邻的字符串文字被连接起来。

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