Ада-95. Компилятор GNAT

       

Директивы компилятора


Стандарт 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е; в качестве идентификатор_соглашения

могут использоваться:

  • Ada

  • Instrinsic

  • C

  • Fortran

  • Cobol

    при этом, следует заметить, что обязательно поддерживаемыми являются только Ada и Instrinsic, кроме того, реализация конкретного компилятора может добавить любое другое значение

Entity  -  обозначает имя идентификатора (например, имя вызываемой подпpогpаммы) в Ада-пpогpамме
External_Name  -  обозначает имя идентификатора в чужом модуле (модуле написанном на другом языке программирования)
Link_Name  -  обозначает имя идентификатора с точки зpения линкера (pедактоpа связей)

Директива компилятора Import предназначена для импортирования объектов (подпрограмм или переменных), описанных на других языках программирования, в Ада-программу.

С ее помощью можно вызывать подпрограммы или использовать переменные модулей которые написанны на других языках программирования.

Директива компилятора Export предназначена для экспортирования объектов (подпрограмм или переменных), написанных на Аде, для их использования в модулях, написанных на других языках программирования.

Следует заметить, что в модулях, написанных на других языках программирования, может потребоваться выполнение вызовов adainit и adafinal

для осуществления правильной инициализации и деструктуризации импортированного Ада-кода.

Директива компилятора Convention позволяет указать компилятору на необходимость использования определенных языковых соглашений для какого-либо объекта (подпрограммы или переменной), который впоследствии будет либо импортирован, либо экспортирован.

Директива компилятора Linker_Options предназначена для передачи дополнительных опций линкеру (редактору связей).

Содержимое строкового параметра этой директивы будет зависеть от используемого линкера.



Содержание раздела