Що таке функція IFdef?
Директива #ifdef перевіряє наявність визначень макросу. Якщо вказаний ідентифікатор визначено як макрос, рядки коду, які слідують безпосередньо за умовою, передаються компілятору.
Ключове слово `ifdef просто повідомляє компілятору включити фрагмент коду до наступного `else або `endif, якщо заданий макрос під назвою FLAG визначено за допомогою директиви `define.
Директива `ifdef // перевіряє, чи визначено певний символ (таким чином, // ("ifdef" є абревіатурою від "if defined"). Якщо символ // був визначений раніше, то наступні оператори Verilog // компілюються, доки не зустрінеться `else або `endif.
Різниця між ними полягає в тому #ifdef може використовувати лише одну умову, а #if defined(NAME) може створювати складні умови. Якби вони просто використали #if defined(NAME) із самого початку й уникали створення оператора #ifdef. Sourceforge має хорошу довідку про попередньо визначені макроси компілятора.
Значення #ifdef полягає в тому код всередині блоку буде включений у компіляцію, лише якщо визначено згаданий макрос препроцесора. Подібним чином #if означає, що блок буде включено лише в тому випадку, якщо вираз має значення true (під час заміни невизначених макросів, які з’являються у виразі, на 0).
Директива #ifndef перевіряє, чи не визначено макрос. Якщо вказаний ідентифікатор не визначено як макрос, рядки коду, що йдуть безпосередньо після умови, передаються компілятору.