Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції ООП1.doc
Скачиваний:
7
Добавлен:
17.11.2019
Размер:
554 Кб
Скачать
☆

2. Припроцесорні змінні

Використання файлів, що вмикаються

У мові С++ можна помістити оголошення класів і функцій в окремий файл і включати цей файл на початку інших файлів з допомогою оператора #include.

#include "Book.h"

……………………

Book b;

Фактично оператор #include підставляє вміст файлу Book.h в існуючий

файл, перед тим як відбувається компіляція. Ця підстановка відбувається під час першого проходу компілятора по програмі - припроцесора. Файл Book.h називається файлом заголовком.

В такий же файл заголовок можна включати прототип функції і включати його в інші файли, туди де функція використовується.

Таким чином, текст програми на мові С++ поміщається в файли двох типів - файли заголовків і файли програм. Ім'я файлу, зазвичай, складається із імені класу. Заголовні файли звичайно мають розширення *.h (іноді, особливо в системі Unix, “.hh” або “.Н”) і можуть містити:

  • визначення типів, констант, вбудованих функцій, шаблонів, переліків;

  • оголошення функцій, даних, імен, шаблонів;

  • простори імен;

  • директиви припроцесора;

  • коментарі.

У заголовному файлі не повинно бути визначень функцій і даних.

При вказівці заголовних файлів стандартної бібліотеки розширення *.h можна опускати. Для кожного файлу бібліотеки Із з ім'ям <name.h> є відповідний файл бібліотеки С++ <c name>.

Об'єднувати декілька класів в один файл доречно тільки тоді коли вони тісно зв'язані між собою і один без одного не використовуються.

Припроцесор

В мові С++ існують декілька операторів, що починаються з знаку #: #include, #define, #undef, #ifdef, #else, #if, #pragma.

Усі вони обробляються так званим припроцесором.

Іноді припроцесор називають макропроцесором, оскільки в ньому визначаються макроси. Директиви припроцесора починаються з знаку #, який повинен бути першим символом в стрічці після пробілів.

3. Макровизначення (макроси).

Директива #define

Директива #define визначає підстановку в тексті програми. Вона використовується для визначення:

Cимволічних констант. Формат визначення символічної константи: #define ім'я текст_підстановки /* Всі входження імені замінюються на текст підстановки */

Макросів, які виглядають як функції, але реалізуються підстановкою їх тексту в текст програми. Формат визначення макросу:

#define ім'я (параметри) текст_підстановки

Cимволів, керівників умовною компіляцією. Вони використовуються разом з директивами #ifdef і #ifndef.

Формат:

#define ім'я

Приклади:

#define М 1000

#define Vasia "Василь Іванович" #define МАХ (a, b) ((х)>(у)?(х):(у))

#define__cplusplus

Параметри використовуються при макропідстановці, наприклад, якщо в тексті програми використовується виклик макросу у = МАХ (sum1, sum2); , він буде замінений

у=((sum1 )>(sum2)?(sum1) : (sum2));

Використання макросів і символічних констант в програмах слід уникати.

Директива #undef

Директива #undef відміняє визначення імені, після неї ім'я перестає бути визначеним.

У припроцесора є декілька макроімен, які він визначає сам, їх називають попередньо визначеними іменами. У різних компіляторів набір цих імен різний, але два визначенні завжди: _FILE_ і _LINE_. Значенням макроімені _FILE_ є ім'я поточного вихідного файлу, взятого в лапки. Значенням _LINE_ - номер поточної стрічки в файлі.