Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Языковая конструкция, определяющая, как компилятор должен обрабатывать входные данные.
Language construct that specifies how a compiler should process its input
В компьютерном программировании директива или прагма (от "прагматический") — это языковая конструкция, определяющая, как компилятор (или другой транслятор) должен обрабатывать входные данные. В зависимости от языка программирования, директивы могут быть частью грамматики языка или не быть ею, а также могут различаться в зависимости от компилятора. Они могут обрабатываться препроцессором для указания поведения компилятора или функционировать как форма параметризации, встроенной в код. В некоторых случаях директивы определяют глобальное поведение, а в других — влияют только на локальный участок, например, на блок программного кода. В некоторых случаях, например, в некоторых программах на языке C, директивы являются необязательными указаниями для компилятора и могут игнорироваться, но обычно они являются императивными и должны выполняться. Однако директива не выполняет никаких действий в самом языке, а лишь изменяет поведение компилятора. Этот термин также может использоваться для обозначения проприетарных сторонних тегов и команд (или разметки), встроенных в код, которые приводят к дополнительной исполняемой обработке, расширяющей существующие компиляторные, ассемблерные и языковые конструкции в среде разработки. Термин "директива" также применяется в различных контекстах, аналогичных термину "команда".
In computer programming, a directive or pragma (from "pragmatic") is a language construct that specifies how a compiler (or other translator) should process its input. Depending on the programming language, directives may or may not be part of the grammar of the language and may vary from compiler to compiler. They can be processed by a preprocessor to specify compiler behavior, or function as a form of in band parameterization. In some cases directives specify global behavior, while in other cases they only affect a local section, such as a block of programming code. In some cases, such as some C programs, directives are optional compiler hints and may be ignored, but normally they are prescriptive and must be followed. However, a directive does not perform any action in the language itself, but rather only a change in the behavior of the compiler. This term could be used to refer to proprietary third party tags and commands (or markup) embedded in code that result in additional executable processing that extend the existing compiler, assembler and language constructs present in the development environment. The term "directive" is also applied in a variety of ways that are similar to the term command.
Препроцессор C
В C и C++ язык поддерживает простой макро-предпроцессор. Строки исходного кода, которые должны обрабатываться препроцессором, такие как #define и #include, называются директивами препроцессора. Другая конструкция языка C, директива #pragma, используется для указания компилятору использовать прагматические или зависящие от реализации возможности. Два известных примера использования этой директивы – OpenMP и OpenACC. Синтаксические конструкции, подобные директивам препроцессора C, такие как #if в C#, также обычно называются "директивами", хотя в этих случаях реальная фаза предварительной обработки может и не выполняться. Все команды препроцессора начинаются с символа решётки (#), за исключением директив импорта и модуля в C++.
In C and C++, the language supports a simple macro preprocessor. Source lines that should be handled by the preprocessor, such as #define and #include are referred to as preprocessor directives. Another C construct, the #pragma directive, is used to instruct the compiler to use pragmatic or implementation dependent features. Two notable users of this directive are OpenMP and OpenACC. Syntactic constructs similar to C's preprocessor directives, such as C#'s #if, are also typically called "directives", although in these cases there may not be any real preprocessing phase involved. All preprocessor commands begin with a hash symbol (#) with the exception of the import and module directives in C++.
Язык сборки
В языке ассемблера директивы, также называемые псевдооперациями или "псевдоопциями", обычно задают такую информацию, как целевая машина, обозначают границы между секциями кода, определяют и изменяют переменные времени сборки, определяют макросы, указывают на условный и повторяющийся код, определяют зарезервированные области памяти и так далее. Некоторые, но не все, ассемблеры используют специальный синтаксис для различения псевдоопераций и мнемоник команд, например, добавляя точку перед псевдооперацией, как в случае с псевдооперацией END, которая может предписать ассемблеру прекратить сборку кода.
In assembly language, directives, also referred to as pseudo operations or "pseudo ops", generally specify such information as the target machine, mark separations between code sections, define and change assembly time variables, define macros, designate conditional and repeated code, define reserved memory areas, and so on. Some, but not all, assemblers use a specific syntax to differentiate pseudo ops from instruction mnemonics, such as prefacing the pseudo op with a period, such as the pseudo op END, which might direct the assembler to stop assembling code.
PL/SQL
Процедурный язык PL/SQL корпорации Oracle включает в себя набор директив компилятора, известных как "прагмы".
Oracle Corporation's PL/SQL procedural language includes a set of compiler directives, known as "pragmas".