русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Обумовлене включення файлів


Дата додавання: 2014-11-28; переглядів: 870.


Існує також можливість керувати самою первниино обробкою — за допомогою умовних виразів, які обробить препроцесор. Це дає можливість вибіркового включення коду, залежно від значень умов, розглянутих під час компіляції.

Рядок #if обчислює константний цілочисельний вираз (який не може включати sizeof, зведення типів або констант енумерації). Якщо вираз не є нульовим, всі наступні рядки до#endif або #elif або ж #else буде включено. (Препроцесорний вираз #elif подібний доesle-if.) Вираз defined(назва) після #if дорівнюватиме 1, якщо назву було означено і 0, якщо ні.

Наприклад, щоб упевнитись, що вміст файла hdr.h включено тільки один раз, сам вміст оточується умовою на зразок наступної:

#if !defined(HDR)

#define HDR

 

/* тут йде вміст hdr.h */

 

#endif

Перше включення hdr.h визначає ім'я HDR; наступні включення знаходитимуть це ім'я означеним і стрибатимуть далі аж до #endif. Цей стиль можна використати і щоб запобігти багаторазового включення тих самих файлів. Якщо послідовно впроваджувати даний стиль, тоді кожний файл заголовка може самостійно включати будь-які інші файли заголовка, від яких він залежить, звільняючи користувача заголовка від клопоту про взаємозалежності.

Наступні декілька рядків перевіряють змінну SYSTEM для того, щоб вирішити, яку саме версію файла заголовка включити:

#if SYSTEM == SYSV

#define HDR "sysv.h"

#elif SYSTEM == BSD

#define HDR "bsd.h"

#elif SYSTEM == MSDOS

#define HDR "msdos.h"

#else

#define HDR "default.h"

#endif

#include HDR

Вирази #ifdef і #ifndef являються спеціалізованою формою, яка перевіряє чи ім'я означено, чи ні. Перший приклад з #if вище можна було також написати як

#ifndef HDR

#define HDR

 

/* тут йде вміст hdr.h */

 

#endif


<== попередня лекція | наступна лекція ==>
Заміна макросів | Покажчики й адреси


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн