У меня есть программа, которая предлагает различные функции в зависимости от определений времени компиляции.Я определил OPT_STRING
, который содержит все возможные аргументы командной строки (для использования с getopt_long
).Я искал умного, чтобы изменить его определение в зависимости от определений времени компиляции.Я придумал это:
#define OPT_STRING "haspvb"
#ifdef HAVE_WIFI
#define OPT_STRING OPT_STRING "mw" // => "haspvb" "mw"
#endif // HAVE_WIFI
#ifdef HAVE_IMEI
#define OPT_STRING OPT_STRING "i" // => "haspvb" "mw" "i" or "haspvb" "i"
#endif // HAVE_IMEI
Однако, это приводит к ошибке компиляции:
error: "OPT_STRING" redefined
Есть ли какая-то «макро-магия» для достижения того, что япытаешься сделать?