首页 > 解决方案 > 如何使用字符串文字作为宏参数?

问题描述

我的问题是这个问题的反面。

我想编写一个宏,它将接受一个整数和一个字符串文字作为它的参数,如下所示:

#define STRING_MAP_ENTRY(value, name) \
  {value, std::to_string(val) + " - " + name}

STRING_MAP_ENTRY(0, "ENTRY_1")

宏应该把上面的调用变成{0, "0 - ENTRY_1"}

有没有办法做到这一点?我目前的尝试是这样的:

#define STRING_MAP_ENTRY(val, name) \
  { val, std::to_string(val) + "(" + name + ")" }

标签: c++stringmacros

解决方案


像这样的东西可以工作:

#define STRING_MAP_ENTRY(value, name) \
  {value, #value " - " #name}

STRING_MAP_ENTRY(0, ENTRY_1)

之前的#令牌将把它串起来。至于组合它们,相邻的字符串文字将组合成一个字符串。


推荐阅读