2011-07-28 97 views
0

我們有以下宏:保存字符串C預處理

#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

爲什麼?請停止。 – KevinDTimm

+0

順便說一句,解決辦法是創建一個全局變量,將其設置爲START並將其用於FOO/BAR/END宏 – KevinDTimm

回答

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