Interested Article - Директива (программирование)
- 2020-10-15
- 1
|
Проверить информацию.
|
В программировании термин «директива» (указание) по использованию похож на термин «команда», также используется для описания некоторых конструкций языка программирования (то есть указаний компилятору или ассемблеру особенностей обработки при компиляции).
Язык ассемблера
В языке ассемблера директивы указывают общую информацию, такую как целевая среда, указание границ между секциями и так далее. Например, директива «ALIGN», которая вставляет в текущую секцию необходимое количество байт для выравнивания строк, часто упоминаемая как «директива», противоречит тому факту, что она совпадает с частями конструкций в генерируемом коде.
Препроцессор Си
В языки программирования
C
и
C++
встроена поддержка препроцессора. Строки в исходном коде, которые должны быть обработаны препроцессором в виде
#define
и
#include
, называются
препроцессорными директивами
.
В других языках высокого уровня
Синтаксические конструкции, похожие на препроцессорные директивы языка Си, такие как
#region
в языке
C#
, также часто называются «директивами», хотя в указанных случаях стадии обработки препроцессором может и не быть.
В языке Ада директивы компилятора называются прагмами (сокращение от «pragmatic information» («полезная информация»)).
В
Паскале
директивы называются
указательными комментариями
из-за того, что по синтаксису похожи на
комментарии
. В Паскале указательный комментарий — это комментарий, у которого первым символом указан
знак доллара
; например, аналогом директивы
#include "file"
языка Си будет указательный комментарий
{$I "file"}
.
В
Perl
ключевое слово «
use
» («применять») можно использовать как «прагму», например
use strict;
или
use utf8;
. Такая конструкция иногда может упоминаться как «директива». Тем не менее, в некоторых источниках
используется термин «директивы Perl» для обозначения конструкций типа
Шебанг
.
В языке
Haskell
есть собственный набор прагм. Они позволяют включать расширения языка, передавать параметры компиляции, также есть специальные прагмы. Например
{-# INLINE #-}
,
{-# NOINLINE #-}
указывают компилятору что нужно/не нужно встраивать функцию (аналог ключевого слова
inline
в Си). {-# UNBOXED #-} позволяет хранить данные без служебной информации (эффективность по памяти в ущерб гибкости использования).
{-# SPECIALIZE #-}
используется для переопределения специальных представителей
класса типов
в исключительных ситуациях. Есть также расширения HPP — собственный препроцессор Haskell и CPP (C PreProcessor) — вызов препроцессора Си.
См. также
Примечания
Ссылки
- от 20 декабря 2016 на Wayback Machine
- от 19 сентября 2007 на Wayback Machine
- 2020-10-15
- 1