Директива (программирование)
В программировании директива или прагма (от "прагматический") — это языковая конструкция, определяющая, как компилятор (или другой транслятор) должен обрабатывать входные данные. Директивы не являются частью грамматики языка программирования и могут отличаться от компилятора к компилятору. Они могут обрабатываться препроцессором для указания поведения компилятора или функционировать как форма параметризации в диапазоне.
В некоторых случаях директивы задают глобальное поведение, в то время как в других случаях они влияют только на локальный участок, например, блок программного кода. Иногда, например, в некоторых программах на языке Си, директивы являются необязательными подсказками компилятора и могут быть проигнорированы, но обычно они носят предписывающий характер и должны выполняться. Однако директива не выполняет никаких действий в самом языке, а лишь изменяет поведение компилятора.[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>
- define DO_PRAGMA(x) _Pragma (#x)
DO_PRAGMA (GCC dependency "parse.y") </syntaxhighlight>
Примечания[править]
Литература[править]
- Free Software Foundation, Inc. GNU Free Documentation License (2008).
- Richard M. Stallman The C Preprocessor (1992).
![]() ↑ [+] | |
---|---|
Компиляторы |
Borland Turbo C • Clang • GCC • LCC • Pelles C • PCC • TCC • Visual C++ (C++/CLI • C++/CX) • Watcom C/C++ compiler |
Библиотеки |
Стандартная библиотека языка Си • glibc • dietlibc • uClibc • Newlib • Eglibc • Bionic |
Особенности |
Операторы • C-строка • Синтаксис • Препроцессор • Заголовочные файлы • Типы данных • Функции |
Некоторые потомки |
C++ • C# • D • Objective-C • Swift • Java • Alef[en] • Limbo • Go • Vala |
C и другие языки |
C и C++ (Совместимость[en] • Операторы) • Сравнение Pascal и C[en] • Компилятор C в байт-код Java |
![]() | Одним из источников, использованных при создании данной статьи, является статья из википроекта «Руниверсалис» («Руни», руни.рф) под названием «Директива (программирование)», расположенная по адресу:
Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC BY-SA. Всем участникам Руниверсалиса предлагается прочитать «Обращение к участникам Руниверсалиса» основателя Циклопедии и «Почему Циклопедия?». |
---|