Обща разработка на софтуер - Информационна страница

Информация - Компютри, програмиране

Други материали по темата Компютри, програмиране

дефинициите може да изглеждат така:

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

Тогава предишната програма може да бъде пренаписана, както следва:

Разширение на изходния текстMACRO MacGoto(labelno)

Обърнете внимание, че един макрос може да има повече от един операнд. След това всеки операнд трябва да съответства на формален параметър в реда за дефиниране на име на макрос.

Разгледайте следния пример:

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

Разширение на изходния текстMACRO MacMove(cmd,left)

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

Понякога има нужда да промените реда на командите за разширяване на макроси в макроса.

Помислете за следната програма:

В този пример не само параметрите, но и броят на командите е променлива. Тази програма може да бъде написана по следния начин:

IF комбинация. ТОГАВА. ELSE самакро етикетиилипоследователни знации не се появяват в изходния текст на макропроцесора. Макро езикът може също така да предостави псевдо-командиусловенибезусловен преходкъм псевдо-етикет, от койтомакропроцесорът ще продължи да обработва програмния текст. Точно както в случая на изпълнение на програма, операторите за прескачане служат за указване на изпълнението на операторите на програмата, операторите за прескачане на макроси служат за указване на реда, в който се компилира текстът на програмата. Това дава възможност по време на процеса на разширяване да се получат специфични опции за последователности от команди, съответстващи на даден случай на използване на макрос. Прескачанията и проверките вътре в изпълнимия код увеличават неговия размер и времето за изпълнение, докато проверките и прескачанията в макросите се случват на етапа на компилиране и следователно не изискват времеемко изпълнение на кода. Тази възможност за селективно избиране на части от текст е една от най-мощните функции в системното програмиране.

МАКРО ПОВИКВАНИЯ В МАКРОС

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

Изходен текст Разширение на изходен текст (ниво 1) Разширение на изходен текст (ниво 2).

Макро повикванията, вътре в дефинициите на макроси, могат да включват няколко нива. Например командата Mac2 може да се изпълни вътре в друг макрос. Всъщност съоръжения като макро скокове правят възможно препратката към всяка макро дефиниция произволен брой пъти и дори към самата нея. Такива повиквания се наричат ​​рекурсивни.

МАКРО ДЕФИНИЦИИ В МАКРО ДЕФИНИЦИИ

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

Необходимо е обаче,разберете, че вътрешните макро дефиниции