![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Заголовок макроопределения
Макроопределение должно как-то выделяться в программе, поэтому оно всегда начинается с заголовка. Заголовок имеет формат, подобный следующему: имя_макрокоманды MACRO список формальных параметров имя_макрокоманды является обязательным компонентом. При макровызове это имя употребляется в поле мнемоники оператора. Имена макроопределений, имеющихся в программе, должны быть уникальны. Обычно при распознавании макровызова поиск по имени макрокоманды ведется сначала среди макроопределений имеющихся в программе, а затем (если в программе такое макроопределение не найдено) - в библиотеках макроопределений. Таким образом, имя макрокоманды, определенной в программе, может совпадать с именем макрокоманды, определенной в библиотеке, в этом случае макрокоманда, определенная в программе, заменяет собой библиотечную. Формальные параметры играют ту же роль, что и формальные параметры процедур/функций. При обработке макровызова вместо имен формальных параметров в теле макроопределения подставляются значения фактических параметров макровызова. В развитых Макроязыках возможны три формы задания параметров: позиционная, ключевая и смешанная. При использовании позиционной формы соответствие фактических параметров формальным определяется их порядковым номером. (Позиционная форма всегда применяется для подпрограмм). Пример:
В позиционной форме количество и порядок следования фактических параметров макровызова должны соответствовать списку формальных параметров в заголовке макроопределения. При использовании ключевой формы каждый фактический параметр макровызова задается в виде: имя_параметра=значение_параметра В таком же виде они описываются и в списке формальных параметров, но здесь значение_параметра может опускаться. Если значение_параметра в списке формальных параметров не опущено, то это - значение по умолчанию. В макровызове параметры могут задаваться в любом порядке, параметры, имеющие значения по умолчанию, могут опускаться. Пример:
В смешанной форме первые несколько параметров подчиняются правилам позиционной формы, а остальные - ключевые. Пример:
В некоторых Макропроцессорах имена параметров начинаются с некоторого отличительного признака (например, амперсанда - &), чтобы Макропроцессор мог отличить " свои" имена (имена, подлежащие обработке при обработке макроопределения) от имен, подлежащих обработке Ассемблером. Возникает проблема распознавания имени в теле макроопределения. Например, если макроопределение имеет формальный параметр & P, а в макровызове указано для него фактическое значение 'X', то как должна обрабатываться подстрока '& PA' в теле макроопределения? Должна ли эта подстрока быть заменена на 'XA' или оставлена без изменений? Логика, которой следует большинство Макропроцессоров в этом вопросе, такова. & PA является именем в соответствии с правилами формирования имен. Поэтому оно не распознается как имя & P и остается без изменений. Если мы хотим, чтобы подстановка в этой подстроке все-таки произошла, следует поставить признак, отделяющий имя параметра от остальной части строки. Обычно в качестве такого признака используется точка - '.': '& P.A' заменяется на 'XA'.
|