Я пытаюсь реализовать макрос VERSION для моей программы, который должен быть изменен при определенных обстоятельствах.
макрос VERSION определяется через Makefile (там помещается информация git) и является строкой.
Теперь у меня есть набор ключей # define'd, и я хочу, чтобы VERSION отражал, какие из них включены. Теперь это выглядит следующим образом (main.h):
#define COMPLEX_DEPOSITION // This is switch. later in code it is used in #ifdef...#endif construction.
#ifdef COMPLEX_DEPOSITION
#define CD "_COMP_DEP" // this is the string I want to put in the end of VERSION
#define VERSION_ VERSION CD
#undef VERSION // this is to suppress 'macro redefinition' warning
#define VERSION VERSION_
#undef VERSION_
#endif
Ну, я получаю много ошибок, большинство из которых заставляют меня думать, что препроцессор C работает со строками в файле в случайном порядке: (
Позже у меня есть еще более сложная вещь, которая предназначена сделать VERSION -> VERSION_WLT_GAP_2
#define WIRESLIFETIMES
#ifdef WIRESLIFETIMES
#define GAP 2
#define VERSION_ (VERSION ## "_WLT_GAP_" ## #GAP)
#define VERSION VERSION_
#undef VERSION_
#endif
и я понятия не имел, что делать, и если это вообще возможно