Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tema_2._Direktivi_preprocesora.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
64 Кб
Скачать

Директиви препроцесора

Більшість можливостей препроцесора реалізується з використанням спеціальних директив. Директивами препроцесора є рядки, що починаються з символу'#',< br /> за яким слідує ідентифікатор, названий ім'ям директиви. Дозволяється використання пропусків перед і після символу'#'.< br />  Існує строгий набір директив. Програми не можуть визначати нові  директиви. 

Деякі директиви вимагають наявності аргументів, якими є  решта рядка відокремлена від імені директиви одним або кількома  пробілами. Зазвичай, директива препроцесора не може займати більше одного рядка.  Хоча, вона може бути розбита за допомогою послідовності backslash-newline.  Коментарі, що містять перенесення рядка, також розбивають директиву на  кілька рядків, але перед обробкою директиви всі коментарі замінюються  пробілами. Якщо символ розриву рядків знаходиться всередині символьної або  строковий константи, то препроцесор обробляє наступні рядки, як  нічим не пов'язані з попередньою. 

Символ '#' і ім'я директиви не походять від макрорасшіренія. Наприклад, якщо 'foo' є параметром директиви 'define', то це не означає, що '# foo' це директива препроцесора. 

Уведення файлів у програму

Для спрощення роботи з наборами конструкцій #define і описів у мові С++ передбачено можливість включення файлів. Наприклад, рядок вигляду #include ”FileName” замінюється вмістом файлу з іменем FileName. Один або два такі рядки записуються на початку кожного вихідного файлу для того, щоб включити загальні конструкції #define й опису extern для глобальних змінних. Допускається вкладеність конструкцій #include. Конструкція #іnclude є способом зв’язку описів у великих програмах. Цей спосіб гарантує, що всі вихідні файли будуть забезпечені однаковими визначеннями й описами змінних, і виключає особливий вид помилок. Зрозуміло, що якщо введений файл змінюється, то всі залежні від нього файли мають бути перекомпільовані.

Директива препроцесора #define

 Директива #define: символічні константи

 Дана директива застосовується для створення символічних констант, представлених символами, і макроси, тобто операції, визначені як символи. Формат директиви #define визначається наступним чином:

#define   ідентифікатор   текст_заміни

 Коли така лінійка появляється в файлі, замість всіх наступних з’явлень ідентифікатора буде автоматично підставлений текст_заміни, який може бути взятий як ресурс, до того, як програма буде компілюватися. Наприклад:

#define  РІ  3.14159

 Заміняє всі наступні появи символічної константи РІ на чисельну константу 3.14159. Символічні константи дозволяють програмісту створювати ім’я для константи і використовувати його в будь-якому місці програмного коду по необхідності. Якщо є необхідність змінити значення константи у всій програмі, то достатньо це зробити в одному місці програми, в директиві #define, і після повторної компіляції програми всі включення константи в програму будуть автоматично замінені. При заміні замість іменованої константи буде підставлено все, що знаходиться справа від неї в директиві #define. Наприклад, лінійка #define РІ=3.14159 приведе до того, що препроцесор замінить по всьому тексту програми буквосполучення РІ на =3.14159, що буде являтися помилковим через використання знака =. Перевизначення символічної константи, при якому їй присвоюється нове значення, також являється помилкою.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]