用于将标记的整数映射到字符串的宏

时间:2014-04-12 14:17:46

标签: c++ macros

我需要一个宏TAG(N,C),它接受​​参数NC生成一个TAG_ + f(N)+ g(C)形式的标记,其中{{1} },f(1) = Af(2) = ABf(3) = ABCf(4) = ABCDg(0) = (empty string)g(1) = _FOO

示例:

g(2) = _BAR

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

#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))