c++ - 如何使用字符串文字作为宏参数?
问题描述
我的问题是这个问题的反面。
我想编写一个宏,它将接受一个整数和一个字符串文字作为它的参数,如下所示:
#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 + ")" }
解决方案
像这样的东西可以工作:
#define STRING_MAP_ENTRY(value, name) \
{value, #value " - " #name}
STRING_MAP_ENTRY(0, ENTRY_1)
之前的#
令牌将把它串起来。至于组合它们,相邻的字符串文字将组合成一个字符串。
推荐阅读
- android - 是否可以仅使用 SharedPreferences 来存储来自 recyclerview 的数据?
- javascript - 如何为anime.js 旋转设置任意轴?
- ios - 如何将 Core Data 用于主应用程序和单元测试?
- python - 将 request.user.email 放在另一个模型字段中
- firebase - Flutter 不使用 Firestore 构建 iOS 应用程序
- python - com_error: (-2147352567, '发生异常。', (0, None, None, None, 0, -2147024809), None)
- c# - 比较两个 Json
- javascript - 如何在数组响应的所有对象中填充字段?
- c - 如何将焦点设置到 GTK3 中的窗口?
- javascript - 错误 Bootstrap 4 和 fullcalendar.js - bootstrap 4 模态中的 fullcalendar