У меня проблема в программе, над которой я работаю.Я пытаюсь в --help, чтобы показать, какие функции собраны или нет.Однако их довольно много, и «нормальный» путь слишком многословен.Например:
#ifdef HAVE_FOO
static const bool have_foo = true;
#else
static const bool have_foo = false;
#endif
printf("Support for foo: %s\n", have_foo ? "yes" : "no");
Теперь, поскольку я должен делать это в основном для каждой функции, это будет множество строк, которые мне не нужны.некоторые макросы для этого:
#define _SUPP(X) #ifdef HAVE_##X \
static const bool _##X##_SUPP = true; \
#else \
static const bool _##X##_SUPP = false; \
#endif
#define _PRINTSUPP(var, name, desc) printf("\t%s - %s: %s\n", name, desc, _##var##_SUPP ? "yes" : "no")
Однако здесь есть проблема.Макрос будет расширен до одной строки, и препроцессор захлебнется этим.Есть ли способ генерировать макрос с реальными символами новой строки между ними, или можно вычислить #ifdef
в одной строке?