ПредишенСледващото

Всяка директива #if в изходния файл трябва да бъде директива съответно затваряне # endif. Между директиви # endif #if и може да бъде разположен директиви произволен брой #elif. но се допуска не повече от един #else директива. #else директива. ако има такива, трябва да е за последен преди директивата # endif.

директива #if. #elif. #else и # endif може да се инвестира в друг текст, част #if директиви. Всеки вложен #else директива. #elif или # endif се отнася до най-близкия директивата предходната #if.

Всички условни директиви компилации като #if и #ifdef. до края на файла трябва да бъде съответно затваряне # endif директива; в противен случай, се появява съобщение за грешка. Ако директиви на условията компилация се съдържат в включват файлове, те трябва да отговарят на същите условия в края на файла включва не трябва да не влязат в директивите на условията компилация.

В тази част от командния ред, който следва отбор #elif. заместване Macro се извършва, така че макро обаждания, можете да използвате константен израз в израза.

Препроцесор избира една от снимачната площадка на срещания на параметъра текст за по-нататъшна обработка. Блок като параметър от текст. Тя може да бъде всяка една последователност от текст. Тя може да се простира на няколко линии. Обикновен текст - е текстът на програмата, ясно на компилатора или Препроцесорът.

Препроцесорът обработва избрания текстов блок и да го предадат на компилатора. Ако текстовия блок съдържа Препроцесорът, Препроцесорът изпълнява тези директиви. Съставител единици само текстови, избрани от Препроцесорът.

Препроцесорът избира един от елементите на текста. оценка на устойчивите изрази след всяко директива #if или #elif. дотогава, докато се установи експресията на вярно (не е нула). Избира целия текст (включително други директиви предпроцесорни, които започват със символа #) до съответната директива #elif. #else или # endif.

Ако всички срещания на постоянни изрази са фалшиви или не директивата аудио #elif. предпроцесорни избира текстови блок, след #else на присъда. #else Ако предложението бъде пропуснато, и всички случаи на постоянни изрази в #if блок са настроени на фалшиви, нито текстовото поле не е избрана.

Постоянна експресия - е цяло число постоянна експресия на следните допълнителни ограничения:

Изразяване трябва да е цяло число тип и може да съдържа само константи целочислени, константи характер и определено оператор.

Условията не са разрешени за употреба на оператора на sizeof или актьорския състав на оператора.

Целевата околната среда може да не е в състояние да представлява всички диапазони на числа.

Трансформацията е от тип Int. съвпадащ с типа дълго. и тип неподписан Int. съвпадащ с типа неподписан дълго.

Компилаторът може да конвертирате константите на героите в набора от кодовите стойности, където от зададената целева среда. За да се определят свойствата на целевата среда, проверка на стойността на макро LIMITS.H файла в прилагането съставен за целта околната среда.

Изразът не трябва и не трябва да се вземат някакви запитвания от медиите зависи от конкретното изпълнение на целевия компютър.

Препроцесор оператор определено може да се използва в специални постоянни изрази, както е показано в следния синтаксис:

Това е постоянна експресия се приема за истински (не е нула), ако текущо определени идентификатор; иначе условието е лъжа (0). Identifier определя като празен текст се счита за сигурен. Директива определено може да се използва само в директивите #if и #elif.

Следващият пример # endif #if и управляват директиви компилация призоваващи един от 3 функции:

Call кредит функция се компилира, ако такъв е определен идентификатор кредит. Ако сте определили ID дебит. съставен предизвикателство дебит функция. Ако не е посочен нито един от тези идентификатори, обаждането се компилира printerror функция. Имайте предвид, че в C и C ++ идентификатори КРЕДИТ и кредит - това е различни идентификатори за различно чувствителни.

В следващия пример, условен оператор компилация използва предварително дефинирани символична константа име DLEVEL.

#if първия блок 2 се състои от набор от вместения директиви #if. #else и # endif. Първият набор от директиви се обработват само ако състоянието DLEVEL> 5. В противен случай се работи оператори, намиращи се след #else директивата.

Директива #elif #else и във втория пример се използва, за да изберете един от четирите варианта в зависимост от константите на стойност DLEVEL. Постоянно STACK задава стойност от 0, 100 или 200, в зависимост от константите на определяне DLEVEL. Ако DLEVEL по-голям от 5, а след това на позиция се съставя

и постоянно STACK остава несигурно.

Условна компилация обикновено се използва за предотвратяване на множество включвания от същия заглавие файла. В C ++, където класове често са дефинирани в файлове заглавието, могат да се използват структури като тези, показани по-долу, за да се избегне няколко дефиниции.

Предишният код, който проверява дали определен характер постоянно EXAMPLE_H. Ако е посочено, файлът е вече на се изисква неговата повторна обработка. Ако не, EXAMPLE_H константа се определя за отбелязване на файла като EXAMPLE.H вече обработена.

Подкрепете проекта - споделете линка, благодаря!