Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

If, #else, #elif, #endif.

Якщо вираз, що випливає за #if, істиний, то коди, укладені між #if та #endif, будуть компілюватися. У противному випадку вони будуть при компіляції пропущені. Вираз, що випливає за #if, перевіряється під час компіляції, тому він може містити тільки константи і макроси, колись визначені. Змінні не можуть використовуватися.

Директива #еlsе використовується так само, як еlsе в мові С.

Приведемо простий приклад використання #if та #еlsе.

/* Використання умовної компіляції */

#include <stdio.h>

#define МАХ 100

main(void)

{

#if МАХ>99

printf(“МАХ більше 99 \n");

#е1sе

Директива #elif використовується для організації вкладеної умовної компіляції. Основна форма використання директиви наступна:

#if вираз

послідовність операторів

#elif вираз1

послідовність операторів

#еlіf вираз2

послідовність операторів

...

#elif вираз N

послідовність операторів

# endif

Інший метод умовної компіляції складається у використанні директив #ifdef та #ifndef.

Основна форма використання директиви

#ifdef ім'я_макросу

послідовність операторів

#endif

 

і відповідно

#ifndef ім'я_макросу

послідовність операторів

#endif

Якщо макрос визначений, то при використанні #ifdef компілюється відповідна послідовність операторів до #endif. Якщо ж макрос не визначений або був відмінений директивою #undef, то відповідна послідовність операторів компілятором ігнорується.

Директива #ifndef діє протилежним образом стосовно директиви #ifdef.

З директивами #ifdef та #ifndef можна використовувати директиву #else, однак директиву #elif використовувати не можна.

Щоб мати можливість перевіряти, чи визначені комбінації макросів у препроцесорі, існує операція defined. Вона припустима тільки в директивах #if та #еlіf. Вираз defined(ім'я_макросу) приймає значення 1("істинно"), якщо макрос визначений, і 0("хибно"), якщо макрос не визначений. Директиви

#if defined(МАХ)

та

#ifdef МАХ

дають той самий результат. Перевага складається в можливості використання, наприклад, таких директив:

#if defined(МАХ)&&defined(МІN)

Макрос, визначений так має порожнє (NULL) значення, вважається визначеним.

Після #defined МАХ макрос МАХ вважається визначеним, але його значення невідоме.

Директива #line використовується для зміни змісту визначених макросів _LINE_ та _FILE_. Основна форма директиви наступна:

#line ціла_константа "ім'я_файлу"

Директива #line служить для завдання програмі способу нумерації рядків і використовується при налагодженні програм. Ця директива ігнорується при роботі в інтегрованому середовищі, але використовується при компіляції за допомогою компілятора командного рядка tсс.

Директива #рrаgма дозволяє використовувати специфічні для конкретних реалізацій директиви у формі

#рrаgма ім'я_дирекгивы

За допомогою #рrаgма Вогlаnd С++ дозволяє визначити будь-які бажані директиви, не звертаючись при цьому до інших, які мають підтримку їх компілятора. Якщо компілятор не підтримує дане ім'я директиви, то він просто ігнорує директиву #рrаgма.

Вог1аnd С++ підтримує наступні імена директив:

· аrgusеd,

· exit,

· startup,

· inline,

· option,

· saveregs,

· warn.

Використання директиви #рrаgма вимагає більше знань, чим ми використовуємо в цій методичці, тому приведемо лише одне застосування:

#рrаgма inline

Ця директива повідомляє компіляторові, що програма містить вбудовані ассемблерні коди. Ця директива еквівалентна опції компілятора командного рядка -В або відповідній опції інтегрованого середовища.

Більш докладну інформацію можна знайти в документації по Вог1аnd С++.


Дата добавления: 2015-07-20; просмотров: 65 | Нарушение авторских прав


Читайте в этой же книге: Обмінне сортування | Інші методи сортування | ВАРІАНТИ ЗАВДАНЬ РОБОТИ | ТЕОРЕТИЧНА ЧАСТИНА | У двовимірні та навпаки | ВАРІАНТИ ЗАВДАНЬ РОБОТИ | Зв’язок між покажчиками та масивами | Покажчики на багатовимірні масиви. | Масиви покажчиків | ЗАВДАННЯ ПО ОБРОБЦІ РЯДКІВ |
<== предыдущая страница | следующая страница ==>
Директиви препроцесора.| Визначені макроси.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)