【问题标题】:c #define macro string concatenationc #define 宏字符串连接
【发布时间】:2017-08-27 19:25:36
【问题描述】:

Win7 SP1 32bit,Code Composer Studio v6.1(我认为他们正在使用gcc)

我似乎在让魔法序列执行以下操作时遇到了一些麻烦......

我想编写一个预处理器#define 指令,格式如下:

(伪代码)

#define extn(x) extern   uint16_t    str_#x

然后使用它,因此:

extn(hello);

然后经过预处理,结果看起来像......

extern uint16_t  str_hello;

维基百科C preprocessor 中的这篇文章指出:

“您不能将宏参数与附加文本组合在一起并将其全部字符串化。但是,您可以编写一系列相邻的字符串常量和字符串化的参数:C 编译器然后会将所有相邻的字符串常量组合成一个长字符串。”

【问题讨论】:

    标签: c macros


    【解决方案1】:

    你想要的是 concatenation 而不是 stringify。因此,请使用##

    #define extn(x) extern   uint16_t    str_##x
    

    【讨论】:

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