在C预处理器中保存字符串

时间:2011-07-28 16:16:36

标签: preprocessor

我们有以下宏:

#define START(x) [...]
#define FOO(x, a, b, c) [...]
#define BAR(x, a, b, c) [...]
#define END(x) [...]

我们有一段代码:

START(foobar)
FOO  (foobar, 1, 2, 3)
FOO  (foobar, 0.1, 0.2, 0.3)
BAR  (foobar, 2, 3, 4)
END  (foobar)

我们可以做些什么让START将 foobar 存储在某个地方吗?要将之前的xform改为:

START(foobar)
FOO  (1, 2, 3)
FOO  (0.1, 0.2, 0.3)
BAR  (2, 3, 4)
END  ()

(类似于#define FOO(x) #define VAR x

1 个答案:

答案 0 :(得分:2)

怎么样:

定义:

#define START() [...VAR...]
#define FOO(a, b, c) [...VAR...]
#define BAR(a, b, c) [...VAR...]
#define END() [...VAR...]

用法:

#define VAR foobar
START()
FOO  (1, 2, 3)
FOO  (0.1, 0.2, 0.3)
BAR  (2, 3, 4)
END  ()
#undef VAR