4.2 Объявление |
Вверх Предыдущий Следующий |
Переменные должны быть объявлены в секции объявления переменных модуля или процедуры или функции. (см. 16.6 Область действия) Выглядит это следующим образом: Объявление переменной Это означает, что допустимы следующие объявления переменных: Var curterm1 : integer; curterm2 : integer; cvar; curterm3 : integer; cvar; external; curterm4 : integer; external name 'curterm3'; curterm5 : integer; external 'libc' name 'curterm9'; curterm6 : integer absolute curterm1; curterm7 : integer; cvar; export; curterm8 : integer; cvar; public; curterm9 : integer; export name 'me'; curterm10 : integer; public name 'ma'; curterm11 : integer = 1 ; Различие между этими объявлениями следующие: 1.Первая форма (curterm1) определяет регулярную переменной.Компилятор управляет всем сам по себе. 2.Вторая форма (curterm2) объявляет также регулярную переменную, но определяет, что ассемблерное имя для этой переменной равняется имени переменной записаной в источнике. 3.Третья форма (curterm3) объявляет переменную, которая расположена внешне: компилятор предположит, что память расположена в другом месте, и что ассемблерное имя этой памяти совпадает с именем переменной, указаной в исходном коде. Имя можно не указывать(ассемблерное имя). 4.Четвертая форма абсолютно эквивалентна третьей, она объявляет переменную, которая сохранена внешне, и явно задает ее ассемблерное имя. Если ключевое слово cvar не используется, имя должно быть указано явно. 5.Пятая форма - разновидность четвертой формы, только еще указано имя библиотеки, в которой зарезервирована память. 6.Шестая форма объявляет переменную (curterm6), и говорит компилятору, что она размещена в той же области памяти что и другая переменная (curterm1). 7.Седьмая форма объявляет переменную (curterm7), и говорит компилятору, что ассемблерная метка этой переменной должна быть такой же как и имя (чувствительной к регистру) переменной и должна быть экспортирована. то есть на нее можно ссылаться из других объектных файлов. 8.Восьмая форма (curterm8) эквивалентна седьмой: 'public' - псевдоним для 'export'. 9.Девятая и десятая форма эквивалентны: они определяют ассемблерное имя переменной. 10.Форма одинадцать объявляет переменную (curterm11) и инициализирует ее значением (1 в вышеупомянутом случае). Отметьте, что ассемблерные имена должны быть уникальными. Не возможно объявить или экспортировать 2 переменные с тем же самым ассемблерным именем. |