Директивы #ifdef и #ifndef отличаются по своему действию. 15
Директива #ifdef позволяет включать раздел кода, если определённый макрос определён с помощью #define. 1 Если макрос не определён, то фрагмент кода исключается из компиляции. 3
Директива #ifndef работает по обратной логике: блок инструкций между #ifndef и #endif будет выполнен только в том случае, если макрос или идентификатор с #ifndef не определён. 1
Таким образом, основное отличие в том, что #ifdef включает код, если макрос определён, а #ifndef — если макрос не определён. 15
Директивы обозначают начало управляемого ими фрагмента кода, который завершается с помощью директивы #endif. 3