Директивы компилятора
Стандарт Ada95 содержит следующее описание стандартных директив компилятора Import, Export, Convention и Linker_Options:
pragma Import( [Convention =>] идентификатор_соглашения, [Entity =>] локальное_имя
[, [External_Name =>] строковое_выражение] [, [Link_Name =>] строковое_выражение]); pragma Export( [Convention =>] идентификатор_соглашения, [Entity =>] локальное_имя [, [External_Name =>] строковое_выражение] [, [Link_Name =>] строковое_выражение]); pragma Convention ([Convention =>] идентификатор_соглашения, [Entity =>] локальное_имя); pragma Linker_Options (строковое_выражение); |
При описании синтаксиса этих директив компилятора подразумевается, что:
Convention | - | обозначает язык или, точнее, соглашения (например, для вызова подпрограмм) используемые в конкpетном тpанслятоpе; в качестве идентификатор_соглашения
могут использоваться:
| |
Entity | - | обозначает имя идентификатора (например, имя вызываемой подпpогpаммы) в Ада-пpогpамме | |
External_Name | - | обозначает имя идентификатора в чужом модуле (модуле написанном на другом языке программирования) | |
Link_Name | - | обозначает имя идентификатора с точки зpения линкера (pедактоpа связей) |
Директива компилятора Import предназначена для импортирования объектов (подпрограмм или переменных), описанных на других языках программирования, в Ада-программу.
С ее помощью можно вызывать подпрограммы или использовать переменные модулей которые написанны на других языках программирования.
Директива компилятора Export предназначена для экспортирования объектов (подпрограмм или переменных), написанных на Аде, для их использования в модулях, написанных на других языках программирования.
Следует заметить, что в модулях, написанных на других языках программирования, может потребоваться выполнение вызовов adainit и adafinal
для осуществления правильной инициализации и деструктуризации импортированного Ада-кода.
Директива компилятора Convention позволяет указать компилятору на необходимость использования определенных языковых соглашений для какого-либо объекта (подпрограммы или переменной), который впоследствии будет либо импортирован, либо экспортирован.
Директива компилятора Linker_Options предназначена для передачи дополнительных опций линкеру (редактору связей).
Содержимое строкового параметра этой директивы будет зависеть от используемого линкера.