КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Директиви умовної компіляціїДирективи умовної компіляції #if, #ifdef та #ifndef застосовуються для того, щоб виключити компіляцію окремих частин програми. Це буває корисно при відладці або, наприклад, за підтримки декількох версій програми для різних платформ. Формат директиви #if:
#if константное_выражение [ #elif константное_выражение [ #elif константное_выражение .]
[ #else .] #endif Кількість директив #elif – довільне. Блоки коду, що виключаються, можуть містити як описи, так і виконувані оператори. Приклад умовного включення різних версій заголовного файлу:
#if VERSION == 1 #define INCFILE "versl.h" #elif VERSION == 2 #define INCFILE "vers2.h" / * і так далі * / #else #define INCFILE "versN.h" #endif #include INCFILE
У константних виразах може використовуватися перевірка, чи визначена константа, за допомогою defined(имя_константы), наприклад:
#if defined(__BORLANDC___)& & ___BORLANDC_ == 0x530 // Вс5.3: typedef istream_iterator <int.char.char__traits<char>.ptrdiff__t> istream_iter; #elif defined(_BORLAND___)/ / BC5.2: typedef istream_iterator<int. ptrdiff__t> istream_iter: #else // VC5.0: typedef istream_iterator<int> istream_iter: #endif
Інше призначення директиви – тимчасово закоментувати фрагменти коду, наприклад:
#if 0 int i, j ; double x, у; #endif
Оскільки допускається вкладеність директив, такий спосіб дуже зручний. Найчастіше в програмах використовуються директиви #ifdef та #ifndef, що дозволяють управляти компіляцією залежно від того, чи визначений за допомогою директиви #definе вказаний в них символ (хоч би як порожній рядок, наприклад, #define 32_BIT_SUPPORT):
#ifdef символ //Розташований нижче код компілюється, //якщо символ визначений #ifndef символ //Розташований нижче код компілюється, //якщо символ не визначений
Дія цих директив розповсюджується до першого #elif, #else або #endif. Директива #ifndef часто застосовується для того, щоб забезпечити включення заголовного файлу тільки один раз:
#ifndef HEADER_INCLUDED #include "myheader.h" #define HEADER_INCLUDED #endif Контрольні питання
1. Що таке програма? 2. Опишіть процес створення програми. 3. Які стандартні типи даних є у мові C++? 4. Які відмінності існують між сучасним стандартом С++ та його попереднім стандартом? 5. Які типи констант ви знаєте? 6. Які директиви препроцесора ви знаєте? 7. Призначення директиви #include. 8. Призначення директиви #define. 9. Перелічите символи Escape-послідовності. 10. Яким чином можна перевизначити тип даних. 11. Яким чином можна задати 8-і та 16-і константи? 12. Рядкові та символьні константи. 13. Які ви знаєте засоби ініціалізації масиву символів (рядка)? 14. Розкрийте призначення ASCII-нуля ‘\0’?
|