是否有一种单宏方法来为 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"
因此,在考虑让我的定义宏工作时,我找到了 #
和 ##
宏助手,并使用它们来简化我的宏。宏的关键部分将变量设置为包含变量名称(但不是单独的变量名称)的字符串。作为一个简化的例子,让我们以一个名为 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"