Директива #ifndef перевіряє, чи не визначено макрос. Якщо вказаний ідентифікатор не визначено як макрос, рядки коду, що йдуть безпосередньо після умови, передаються компілятору.
Використовуйте оператор #ifdef, якщо ви хочете скомпілювати розділ, лише якщо вказаний вираз було визначено за допомогою #define. Використовуйте #ifndef коли ви хочете скомпілювати розділ, лише якщо вказаний вираз не визначено.
#ifdef перевіряє, чи наступне ім'я є перед ним #define d. Код між #ifdef і #endif буде проігноровано, якщо перевірка не вдасться.
Константний вираз defined( identifier ), який використовується з директивою #if, є кращим. Директива #ifndef перевіряє умову, протилежну умові, перевіреній за допомогою #ifdef . Якщо ідентифікатор не визначено або якщо його визначення було видалено за допомогою #undef, умова є істинною (ненульовою).
Директива #ifndef (якщо не визначено) перевіряє, чи визначено макрос MYHEADER_H. Якщо його не було визначено, препроцесор включатиме вміст файлу заголовка до директиви #endif. Якщо його вже визначено, препроцесор пропустить вміст файлу заголовка.
Директива #ifndef перевіряє, чи не визначено макрос. Якщо вказаний ідентифікатор не визначено як макрос, рядки коду, що йдуть безпосередньо після умови, передаються компілятору.