4.2 Объявление

На верх  Назад  Вперёд

Переменные должны быть объявлены в секции объявления переменных модуля или процедуры или функции. (см. 16.6 Область действия) Выглядит это следующим образом:


Объявление переменной

401


Это означает, что допустимы следующие объявления переменных:

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 переменные с тем же самым ассемблерным именем.