Директива (программирование)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В программировании термин «директива» (указание) по использованию похож на термин «команда», так как также используется для описания некоторых конструкций языка программирования (то есть указаний компилятору или ассемблеру особенностей обработки при компиляции).

Язык ассемблера[править | править код]

В языке ассемблера директивы указывают общую информацию, такую как целевая среда, указание границ между секциями и так далее. Например, директива «ALIGN», которая вставляет в текущую секцию необходимое количество байт для выравнивания строк, часто упоминаемая как «директива», противоречит тому факту, что она совпадает с частями конструкций в генерируемом коде.

Препроцессор Си[править | править код]

В языки программирования C и C++ встроена поддержка препроцессора. Строки в исходном коде, которые должны быть обработаны препроцессором в виде #define и #include, называются препроцессорными директивами.

В других языках высокого уровня[править | править код]

Синтаксические конструкции, похожие на препроцессорные директивы языка Си, такие как #region в языке C#, также часто называются «директивами», хотя в указанных случаях стадии обработки препроцессором может и не быть.

В языке Ада директивы компилятора называются прагмами (сокращение от «pragmatic information» («полезная информация»)).

В Паскале директивы называются указательными комментариями из-за того, что по синтаксису похожи на комментарии. В Паскале указательный комментарий — это комментарий, у которого первым символом указан знак доллара; например, аналогом директивы #include "file" языка Си будет указательный комментарий {$I "file"}.

В Perl ключевое слово «use» («применять») можно использовать как «прагму», например use strict; или use utf8;. Такая конструкция иногда может упоминаться как «директива». Тем не менее, в некоторых источниках[1] используется термин «директивы Perl» для обозначения конструкций типа Шебанг.

В языке Haskell есть собственный набор прагм. Они позволяют включать расширения языка, передавать параметры компиляции, также есть специальные прагмы. Например {-# INLINE #-}, {-# NOINLINE #-} указывают компилятору что нужно/не нужно встраивать функцию (аналог ключевого слова inline в Си). {-# UNBOXED #-} позволяет хранить данные без служебной информации (эффективность по памяти в ущерб гибкости использования). {-# SPECIALIZE #-} используется для переопределения специальных представителей класса типов в исключительных ситуациях. Есть также расширения HPP — собственный препроцессор Haskell и CPP (C PreProcessor) — вызов препроцессора Си.

См. также[править | править код]

Примечания[править | править код]

Ссылки[править | править код]