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

Друга директива: #undef, #if, #ifdef, #ifndef, #else и # endif

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

#undef директива отменя най-новата дефиниция на име макро.

#undef BIG / * BIG вече не е определено * /

#define ОГРОМЕН 10 / * предефинирани като огромна на 10 * /

#undef ОГРОМЕН / * ОГРОМЕН отново в размер на 5 * /

#undef ОГРОМЕН / * ОГРОМЕН вече не е определено * /

Очевидно (надяваме се), не е съставяне на файла, както в този пример. Да предположим, че имате голям файл стандарт, определен от #include директивата. че бихте искали да използвате, но че някои от неговите определения, ще трябва временно да се промени на една от функциите на програмата, вместо да се налага да се справят с този файл, можете просто да го включите, и след това да заобикалят изглеждат изключително разполагат съответните директиви на #define и # undef.

Или да предположим, че работим с голяма софтуерна система. Вие искате да зададете макроси, но не сте сигурни дали вашата дефиниция използва други определения от някоя от другите места на системата. В този случай, просто се откажете от макроси на място, където и да е, вече не е необходимо, както и оригинала на този макрос, ако има такива, ще продължи да остане в сила за останалата част от системата.

Други директиви, които се споменават ви позволяват да изпълняват условията компилация. Ето един пример:

#include "horse.h" / * екзекутиран, ако е определено Мейвис * /

# определят конюшни 5

#include "cow.h" / * екзекутиран, ако Мейвис не е определено * /

# определят конюшни 15

#ifdef директива гласи, че ако в следващите идентификатор (Мейвис) се определя от Препроцесорът, а след това всички последващи директиви са последвани до първата поява #else или # endif. Когато програмата е #else. от #else до # endif програма ще бъде изпълнена, ако идентификаторът не е определена.

Тази структура е много подобна на структурата, ако-друг език С. Основната разлика е, че Препроцесорът не признава фигурните скоби <>. маркиране на блока, защото използва #else директива (ако има такива) и # endif (който трябва да бъде), за да отбележат директиви блокове.

Тези условни конструкции могат да бъдат вложени.

#ifdef и директива #if може да се използва с #else и # endif по същия начин. #ifndef директивата анкети, със или без последваща идентификатор несигурно; Тази директива е обратното на #ifdef. директива #if е по-близко до нормалното оператор, ако езикът на C. Следван от константен израз, който се смята за вярно, ако тя не е равна на нула:

Една от целите на използването на "условията компилация" - да се направи програмата по-мобилни. Чрез промяна на няколко ключови дефиниции в началото на файла, можете да зададете различни стойности и включва разнообразие от файлове за различни системи.

Тези кратки примера илюстрират изненадващо способността Xi сложни и строго да контролират езика на програмата.

Свързани статии

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