М 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, най-вероятно ще откриете, че това е невъзможно или изключително трудно.