. В компьютерном программировании директива или pragma (от «прагматика») является языковой конструкцией , который указывает, как компилятор (или другой переводчик ) должен обрабатывать свой ввод. Директивы не являются частью грамматики языка программирования и могут отличаться от компилятора к компилятору. Они могут обрабатываться препроцессором , чтобы указать поведение компилятора, или функционировать как форма внутриполосной параметризации.
В некоторых случаях директивы определяют глобальное поведение, в то время как в других случаях они влияют только на локальный раздел, например блок программного кода. В некоторых случаях, например в некоторых программах на C, директивы являются необязательными подсказками компилятора и могут игнорироваться, но обычно они предписывают и должны соблюдаться. Однако директива не выполняет никаких действий на самом языке, а только изменяет поведение компилятора.
Этот термин может использоваться для обозначения проприетарных сторонних тегов и команд (или разметки), встроенных в код, которые приводят к дополнительной исполняемой обработке, расширяющей существующие конструкции компилятора, ассемблера и языка, присутствующие в среде разработки. Термин «директива» также применяется по-разному, аналогично термину команда.
В C и C ++ язык поддерживает простой препроцессор macro . Строки исходного кода, которые должны обрабатываться препроцессором, такие как #define
и #include
, называются директивами препроцессора.
Другая конструкция C, директива #pragma
, используется для указания компилятору использовать прагматические или зависящие от реализации функции. Двумя известными пользователями этой директивы являются OpenMP и OpenACC.
Синтаксические конструкции, похожие на директивы препроцессора языка C, такие как C # #if
, также обычно называются «директивами», хотя в этих случаях может не быть задействована реальная фаза предварительной обработки.
Все команды препроцессора начинаются с символа решетки (#).
Директивы датируются АЛГОЛОМ 68, где они известны как прагматики (от «прагматический») и обозначаются прагматиками. или пр ; в новых языках, особенно в C, это сокращено до «прагма» (без «т»).
Обычно прагматики в АЛГОЛе 68 используются для определения режима сглаживания, что означает, «как указываются ключевые слова». Далее следуют различные такие директивы, определяющие режимы POINT, UPPER, RES (зарезервировано) или котировки. Обратите внимание на использование строчки для самого ключевого слова pragmat (сокращенно pr ), либо в режиме ТОЧКА, либо в режиме кавычек:
.PR POINT.PR.PR UPPER. PR.PR RES.PR 'pr' quote 'pr'
Сегодня директивы наиболее известны на языке C, созданном в начале 1970-х годов, и продолжаются в текущем стандарте C99, где они являются либо инструкциями для препроцессора C, либо, в форме #pragma
, директивами для самого компилятора. Они также в некоторой степени используются в более современных языках; увидеть ниже.
declare
(также proclaim
или declim
). За одним исключением объявления являются необязательными и не влияют на семантику программы. Единственным исключением является специальный
, который должен быть указан в соответствующих случаях.#include "file"
- это важный комментарий {$ I "file"}
.use
", который импортирует модули, также можно использовать для указания директив, таких как use strict;
или use utf8;
.{- # INLINE foo # -}
.from __future__ import feature
(определено в PEP 236 - - Вернемся к __future__ ), который изменяет языковые функции (и использует существующий синтаксис импорта модуля, как в Perl), и директиву coding
(в комментарии) для указания кодировки источника. файл кода (определен в PEP 263 - Определение кодировок исходного кода Python ). Более общая директива была предложена и отклонена в PEP 244 - Оператор `директива ' ; все это датой 2001 года.use
для директив, с той разницей, что прагмы объявлены красный как строковые литералы (например, "use strict";
или "use asm";
), а не вызов функции.Option
» используется для директив: Option Explicit On | Off
- Когда включено, запрещает неявное объявление переменных при первом использовании, требуя предварительного явного объявления.Option Compare Binary
- Результаты сравнения строк на основе порядка сортировки, полученного из внутренних двоичных представлений символов - например, для английской / европейской кодовой страницы (ANSI 1252) A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø. Affects intrinsic operators (e.g. =, <>, <,>), блока Select Case и строковых функций библиотеки времени выполнения VB (например, InStr).Option Compare Text
- Результат в строке сравнения на основе порядка сортировки текста без учета регистра, определяемого локалью вашей системы, например для английской / европейской кодовой страницы (ANSI 1252) (A = a) < (À = à) < (B=b) < (E=e) < (Ê = ê) < (Z=z) < (Ø = ø). Affects intrinsic operators (e.g. =, <>, <,>), блока Select Case и строковых функций библиотеки времени выполнения VB (например, InStr).Option Strict On | Off
- Когда включено, запрещает: Option Infer On | Off
- Когда включено, позволяет компилятору определять тип локальных переменных из их инициализаторов.ключ: значение
. Например, coding: UTF-8
указывает, что файл закодирован с помощью кодировки символов UTF-8 ..END
, которая может заставить ассемблер прекратить сборку кода.