用于将整数映射到令牌的字符串的宏
Macro for mapping integer to string for token
我需要一个宏TAG(N,C)
,它接受参数N
和C
生成形式为TAG_+f(N)+g(C)的令牌,其中f(1) = A
、f(2) = AB
、f(3) = ABC
、f(4) = ABCD
和g(0) = (empty string)
、g(1) = _FOO
、g(2) = _BAR
。
示例:
TAG(3,0) -> TAG_ABC
TAG(2,1) -> TAG_AB_FOO
TAG(4,2) -> TAG_ABCD_BAR
最好的方法是什么?
您可以使用以下内容:
#define f_1 A
#define f_2 AB
#define f_3 ABC
#define f(N) f_##N
#define g_0 /* Empty */
#define g_1 _FOO
#define g_2 _BAR
#define g(N) g_##N
#define CONCAT3_(A, B, C) A ## B ## C
#define CONCAT3(A, B, C) CONCAT3_(A, B, C)
#define TAG(N, C) CONCAT3(TAG_, f(N), g(C))
相关文章:
- 是否可以在多行字符串文本中使用 C/C++ 预处理器令牌
- 如何在没有运算符>>的情况下从字符串流返回下一个令牌?
- 如何将字符串作为预处理器令牌传递
- 如何使用向量字符串令牌构建表达树
- C 令牌字符串并存储在向量中
- 在C 中的令牌字符串中区分操作数和操作员
- 为什么我的字符串令牌在我的C 野牛程序中最终减少时会获得新线
- 使用令牌解析字符串并分配给变量
- 将字符串拆分为令牌-不包含操作系统特定的函数
- C++:函数返回静态库中的字符串给出错误:在令牌之前':'预期的"="、""、";"、'asm'或'__attribute__'
- 当捕获boost::bad_exical_cast时,我可以访问要强制转换的字符串/令牌吗
- 如何避免在转换字符串令牌流时重复istringstream构造
- C++预处理器能否判断令牌是否为字符串
- C++:仅使用 STL 从字符串中提取令牌
- 如何使 Boost.Spirit.Lex 令牌值成为匹配序列的子字符串(最好通过正则表达式匹配组)
- 如何使"strtok function"一次使用多个令牌字符串? 函数指针会解决这个问题吗?
- C++ 基于/使用(提升)正则表达式拆分字符串以查找令牌
- 分析boost中的令牌时基础字符串的索引
- 获取令牌之间的子字符串
- 获取字符串令牌/参数作为解析