Сохранить строку в препроцессоре C - PullRequest
0 голосов
/ 28 июля 2011

У нас есть следующие макросы:

#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 ? Для преобразования предыдущего в:

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 Ответ

2 голосов
/ 18 октября 2011

А как насчет:

определение:

#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...