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

редактировать
Конструкция языка, определяющая, как piler должен обрабатывать свой ввод

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

В некоторых случаях директивы определяют глобальное поведение, в то время как в других случаях они влияют только на локальный раздел, например блок программного кода. В некоторых случаях, например в некоторых программах на C, директивы являются необязательными подсказками компилятора и могут игнорироваться, но обычно они предписывают и должны соблюдаться. Однако директива не выполняет никаких действий на самом языке, а только изменяет поведение компилятора.

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

Содержание
  • 1 Препроцессор C
  • 2 История
  • 3 Другие языки
    • 3.1 Язык ассемблера
    • 3.2 PL / SQL
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Препроцессор 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, директивами для самого компилятора. Они также в некоторой степени используются в более современных языках; увидеть ниже.

Другие языки
  • В Ada директивы компилятора называются прагмами (сокращение от «прагматическая информация»).
  • В В Common Lisp директивы называются декларациями и указываются с помощью конструкции declare(также proclaimили declim). За одним исключением объявления являются необязательными и не влияют на семантику программы. Единственным исключением является специальный, который должен быть указан в соответствующих случаях.
  • В Turbo Pascal директивы называются значимыми комментариями, потому что в язык грамматика они следуют тому же синтаксису, что и комментарии. В Turbo Pascal значимым комментарием является комментарий, первый символ которого - это знак доллара , а второй символ - буква; например, эквивалент директивы C #include "file"- это важный комментарий {$ I "file"}.
  • В Perl ключевое слово "use ", который импортирует модули, также можно использовать для указания директив, таких как use strict;или use utf8;.
  • Haskell pragmas указываются с использованием специального синтаксиса комментариев, например, {- # INLINE foo # -}.
  • Python имеет две директивы - from __future__ import feature(определено в PEP 236 - - Вернемся к __future__ ), который изменяет языковые функции (и использует существующий синтаксис импорта модуля, как в Perl), и директиву coding(в комментарии) для указания кодировки источника. файл кода (определен в PEP 263 - Определение кодировок исходного кода Python ). Более общая директива была предложена и отклонена в PEP 244 - Оператор `директива ' ; все это датой 2001 года.
  • ECMAScript также принимает синтаксис useдля директив, с той разницей, что прагмы объявлены красный как строковые литералы (например, "use strict";или "use asm";), а не вызов функции.
  • В Visual Basic ключевое слово «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- Когда включено, запрещает:
      • программирование без типа - где объявления, не имеющие явного типа, неявно типизируются как Object.
      • позднее связывание (т. Е. Динамическая отправка в объекты CLR, DLR и COM) для значений, статически типизированных как Object.
      • неявные сужающие преобразования - требующие, чтобы все преобразования в более узкие типы (например, из Long в Integer, Object в String, Control в TextBox) были явными в коде с использованием операторов преобразования (например, CInt, DirectCast, CType).
    • Option Infer On | Off- Когда включено, позволяет компилятору определять тип локальных переменных из их инициализаторов.
  • В Ruby директивы интерпретатора упоминаются как прагмы и задаются комментариями в начале файла, которые следуют за нотацией ключ: значение. Например, coding: UTF-8указывает, что файл закодирован с помощью кодировки символов UTF-8 .
  • В C # директивы компилятора называются директивами предварительной обработки. Существует ряд различных директив компилятора, включая #pragma, которая специально используется для управления предупреждениями компилятора и контрольными суммами отладчика.

Язык ассемблера

  • В языке ассемблера директивы, также называемые псевдо- операции или «псевдооперации», как правило, определяют такую ​​информацию, как целевая машина, отмечают разделение между частями кода, вызывают макросы, определяют зарезервированные области памяти и так далее. Ассемблеры используют особый синтаксис, чтобы отличать псевдооперации от мнемоники инструкций, например, ставя перед псевдооперацией точку, такую ​​как псевдооперация .END, которая может заставить ассемблер прекратить сборку кода.

PL / SQL

См. Также
  • #pragma Once - Директива препроцессора в C и C ++
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-17 08:18:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте