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

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

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

В некоторых случаях директивы задают глобальное поведение, в то время как в других случаях они влияют только на локальный участок, например, блок программного кода. Иногда, например, в некоторых программах на языке Си, директивы являются необязательными подсказками компилятора и могут быть проигнорированы, но обычно они носят предписывающий характер и должны выполняться. Однако директива не выполняет никаких действий в самом языке, а лишь изменяет поведение компилятора.[1]

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

В C99 появился оператор _Pragma. Эта функция решает основную проблему с '#pragma': будучи директивой, она не может быть получена в результате развертывания макроса. _Pragma - это оператор, такой же, как sizeof или defined, и может быть встроен в макрос.

Синтаксис _Pragma (string-literal), где string-literal может быть обычным или широкосимвольным строковым литералом. Она дестрингизируется путем замены всех '\\\' на одно '\' и всех '\"' на '"'. Результат обрабатывается так, как если бы он появился в правой части директивы '#pragma'. Например,

<syntaxhighlight> _Pragma ("GCC dependency \"parse.y\"") </syntaxhighlight>

имеет тот же эффект, что и #pragma GCC dependency "parse.y". Того же эффекта можно добиться с помощью макросов, например

<syntaxhighlight>

  1. define DO_PRAGMA(x) _Pragma (#x)

DO_PRAGMA (GCC dependency "parse.y") </syntaxhighlight>

Примечания[править]

Литература[править]

 
Используемые
в разработке

Ада A+ APL Atlast Forth AWL Язык ассемблера ActionScript ABAP/4 AutoIt AWK BeanShell Бейсик Си Кобол C++ C# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava JavaScript Limbo Lua Модула-3 Object Pascal Objective-C OCaml Oz Parser Паскаль Компонентный Паскаль Perl Pixilang PHP PowerBASIC Python ПЛ/1 Пролог Qi Ruby Scala Scheme Seed7 Smalltalk SQL PL/SQL Tcl TouchDesigner Vala Visual Basic (.NET) • X-Robot

Академические

Agda Clean Curry Idris Лого ML Оберон Planning C РЕФАЛ Симула

IEC 61131-3

Instruction List ST FBD Ladder Diagram (LD) • SFC

Прочие

Алгол Алгол 68 Модула-2 Миранда Hope НОРМИН Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL Brainfuck Befunge Malbolge Piet Spoon Unlambda Whitespace FALSE LOLCODE Глагол

Визуальные

G (LabVIEW) • Microsoft VPL Sikuli VisSim Алиса ДРАКОН Скретч

Прочее

ДинамическиеДля создания компьютерных игрКомпилируемыеС ключевыми словами не на английском языке С C-style синтаксисом СинтаксисYoptaScript

Категория Языки программирования

 
Компиляторы

Borland Turbo CClangGCCLCCPelles CPCCTCCVisual C++ (C++/CLIC++/CX) • Watcom C/C++ compiler

Библиотеки

Стандартная библиотека языка СиglibcdietlibcuClibcNewlibEglibcBionic

Особенности

ОператорыC-строкаСинтаксисПрепроцессорЗаголовочные файлыТипы данныхФункции

Некоторые потомки

C++C#DObjective-CSwiftJavaAlef[en]LimboGoVala

C и другие языки

C и C++ (Совместимость[en]Операторы) • Сравнение Pascal и C[en]Компилятор C в байт-код Java

Категория Категория:Язык программирования Си

Руниверсалис

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

Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC BY-SA.

Всем участникам Руниверсалиса предлагается прочитать «Обращение к участникам Руниверсалиса» основателя Циклопедии и «Почему Циклопедия?».