Фаза препроцессора C будет передавать код внутри #ifdef/#endif
только на фазу компилятора, если символ определен.
Обычно это можно сделать (как минимум) двумя способами.
Во-первых, необходимо использовать параметр командной строки для компилятора, например:
gcc -DDEBUG_MSG myprog.c
(-D
означает определение символа препроцессора, следующего за ним, и, хотя это зависит от реализации, многие компиляторыиспользуйте тот же переключатель).Во-вторых, поместить строку типа:
#define DEBUG_MSG
внутри вашего фактического исходного кода где-то перед #ifdef
.
Первый вариант обычно предпочтительнее, поскольку он позволяет вам контролировать это поведение безвнесение изменений в исходный код, чтобы, например, вы могли получить отладочную и выпускную сборки, сгенерированные из одного и того же исходного кода.