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

М Akros в C те са много важни, но в C ++ се използват много по-малко. Първото правило за тях е: не ги използвайте, ако не се налага. Както беше отбелязано, почти всеки макро показва грешка или на езика, или в програмата. Ако искате да използвате макроси, моля, прочетете много внимателно в началото на вашето ръководство за изпълнението на C предпроцесорни.

макро растеж Р се определя, както следва:

#define име почивка на линия

За име кокошка се случва в знак, той се заменя с останалата част от линията.

след разширяването ще:

име = останал линия

Можете също така да определите М макро параметри.

# определят Mac (а, Ь) аргумент1: а argument2: б

При използване на Mac P се дава два параметъра линии. След разширяване Mac () се заменя с и Ь.

разширен = Mac (Фу бар, гадост гадост)

след разширяването воля

разширена = аргумент1: Foo бар argument2: гадост гадост

М Акрос обработват струни и C ++ синтаксиса знаем много малко, и за вида на C ++ или обхват - нищо. Компилаторът вижда само продължителен форма на макро, така че грешката се диагностицира в макроса, когато макроса се разширява, но не и когато то е определено. В резултат на това там са странни съобщения за грешка.

Към тези макроси може да бъде доста:

#define дело прекъсване; случай
#define NL <<"\\n"
#define завинаги за (;;)
#define MIN (а, б) (((а)<(b))?(a):(b))

Към напълно ненужни макроси:

#define PI 3.141593
# определят започне # определят END>

Но опасни макроси примери:

# определят квадрат (а) * на
# определят INCR_xx (хх) ++
# определят DISP = 4

B За да видите това, което те са опасни, опитайте се да се извърши разширение в следния пример:


А ко сте принудени да използвате макро, когато става дума за световни имена, използвайте операцията за резолюция обхват. и приложете на влизане името на макро параметър в скоби, когато е възможно (вж. МИН- по-горе).

О внимание Brother към резултата на разграничение на разширяването на тези две макроси:

Int А = m1 (1) 2;
INT б = m2 (1) 2;

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

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