Вопросы к Поиску с Алисой
Разница между условной компиляцией и директивой #define заключается в их функциях.
Условная компиляция позволяет выборочно компилировать части исходного кода программы в зависимости от определённых условий. intuit.ru К директивам условной компиляции относятся, например, #if, #ifdef, #elif, #else, #endif. ru.wikipedia.org prog-cpp.ru
Директива #define, в свою очередь, позволяет вводить в текст программы константы и макроопределения. prog-cpp.ru С её помощью объявляются символические константы, которые при обработке исходного кода препроцессором заменяются на соответствующие им числовые или строковые литералы. younglinux.info
Таким образом, условная компиляция ориентирована на управление процессом компиляции, а директива #define — на определение и замену конкретных фрагментов кода.