用于将整数映射到令牌的字符串的宏

Macro for mapping integer to string for token

本文关键字:字符串 令牌 整数 映射 用于      更新时间:2023-10-16

我需要一个宏TAG(N,C),它接受参数NC生成形式为TAG_+f(N)+g(C)的令牌,其中f(1) = Af(2) = ABf(3) = ABCf(4) = ABCDg(0) = (empty string)g(1) = _FOOg(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))