因此,在考虑让我的定义宏工作时,我找到了#
和##
宏助手,并使用它们来简化我的宏。宏的关键部分将变量设置为包含变量名称的字符串(但不包括变量名称)。作为一个简化的示例,让我们使用一个名为SET(X)
的宏,它应该将SET(something)
扩展为something = "pre_something"
。
到目前为止,我发现这样做的唯一方法是使用#define QUOTE(X) #X
和#define SET(X) X = QUOTE(pre_##X)
等两个宏。但是,使用多个宏似乎过多,并且可能会导致进一步宏扩展的问题(我认为)。是否有一种更干净,单行的方式做同样的事情?
答案 0 :(得分:4)
#define SET(x) x = "pre_"#x
C在编译时进行字符串连接,因此连接两个字符串文字会连接起来。
"hello " "world"
- > "hello world"