#endif
Тепер, якщо у початку програми макрос-ідентифікатор _MM_ визначено (за допомогою директиви #define), то фрагмент програми комплюватися буде, якщо ж ні, то позначений фрагмент програми при компіляції буде проігноровано.
Запобігання повторного включення h-файлу
У зв'язку з тим, що обробка директив включення #include часто призводить до неявних рекурсій, препроцесорна обробка програми може приводити до того, що в модифікований текст програми деякий h-файл буде включено більш, ніж один раз. Останнє призводить до дублювання визначень і, як результат, до помилок компіляції. Для того, щоб уникнути повторного включення h-файлів можна використати директиви умовної компіляції #ifndef і #endif у сполученні з директивою визначення простого макросу #define. Такий h-файл може бути влаштований у такий спосіб:
#ifndef MYFILE_H
#define MYFILE_H
… текст h-файлу …
#endif
Контроль параметрів компіляції
Borland C++ визначає ряд макросів, що дозволяють контролювати параметри компіляції, наприклад:
__LARGE__ - визначений, якщо встановлено модель пам'яті LARGE;
__FLAT__ - визначений, якщо встановлено режим побудови 32-бітної прикладної програми з моделлю пам'яті FLAT.
Більш детальну інформацію щодо застосування директив можна подивитись у [7].
Вправи
Вправа 1
Напишіть макрос-функції для піднесення наданого чисельного значення: а) у квадрат; б) у куб; в) у четверту степінь.
Вправа 2
Напишіть макрос-функцію для отримання дескриптору файлу, якого асоційовано з наданим потоком.
Вправа 3
Надана послідовність цілих чисел a1, a2, ... , an . Напишіть програму, яка знаходить найбільшу монотонно зростаючу підпослідовність. Підпослідовність розуміти як послідовність, яку можна отримати з наданої послідовності шляхом вилучення довільної кількості її елементів.
Оптимізацію виконуваного коду по часу його виконання задати шляхом запису у програмі відповідних ключів компіляції.
Вправа 4
Напишіть функцію numstr, яка підраховує кількість рядків у наданому текстовому файлі. Створіть окремий файл numstr.h і розташуйте у ньому свою функцію. Запишіть файл numstr.h таким чином, щоб зробити неможливим його повторне включення до головного файлу програми.