Как уже объяснили другие, макросы препроцессора обрабатываются во время компиляции, вы не можете изменить его во время выполнения.
Если вы хотите переключать отладочную информацию во время выполнения, вам нужна конфигурация времени выполнения, напримерпеременная.Вы можете использовать макросы препроцессора для установки значения по умолчанию.
Пример использования глобальной переменной для переключателя времени выполнения со значением по умолчанию, основанным на макросе препроцессора:
#ifdef DEBUG
int debug = 1; /* default is ON */
#else
int debug = 0; /* default is OFF */
#endif
for(int i=2; i<argc; i++){
if(strcasecmp(argv[i], "+debug")==0){
puts("+debug");
debug = 1; /* change value at run time */
}
if(strcasecmp(argv[i], "-debug")==0){
puts("-debug");
debug = 0; /* change value at run time */
}
/* ... */
/* instead of
#ifdef DEBUG
do_debug_stuff();
#endif
you would have to use */
if(debug) {
do_debug_stuff();
}