【问题标题】:Is there a one-macro way to prefix and quote C macro argument是否有一种单一的宏方法来前缀和引用 C 宏参数
【发布时间】:2015-11-04 09:10:39
【问题描述】:

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

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

【问题讨论】:

    标签: c macros


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 2011-07-01
      相关资源
      最近更新 更多