Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Supported Pragma Directives

Boost , ,

Supported Pragma Directives

Директивы Прагмы, поддерживаемые библиотекой Волн
Директивы Прагмы, поддерживаемые инструментом Волны

Pragma directives supported by the Wave library

Библиотека препроцессоров Waveизначально поддерживает#pragma onceи#pragma message("...").директивы.

В директиве#pragma послеуказано, что файл, в котором находится прагма, будет включен (открыт) только один раз. Это может быть использовано для оптимизации предварительной обработки больших блоков компиляции, которые включают в себя множество файлов. Заметим, однако, что директива#pragma onceподдерживается только при постоянной времени компиляцииBOOST_WAVE_SUPPORT_PRAGMA_ONCEПри составлении библиотеки.

#pragma message(...)директива генерирует замечание, содержащее данный текст сообщения. Это может быть полезно для генерации сообщений о состоянии непосредственно из предварительно обработанного файла. Заметим, однако, что директива #pragma message(...) поддерживается только при постоянной времени компиляцииBOOST_WAVE_SUPPORT_PRAGMA_MESSAGEбыло дано во время составления библиотеки. Обратите внимание, что тело сообщения предварительно обрабатывается всякий раз, когдаBOOST_WAVE_PREPROCESS_PRAGMA_BODYКонстанта времени компиляции определялась при составлении библиотеки.

Pragma directives supported by the Wave tool

Инструмент препроцессора Wave также поддерживает определенные директивы#pragma, которые могут использоваться для управления некоторыми функциями инструментов. Эти директивы#прагмареализуются с использованиемinterpret_pragma().предварительная обработка крючка (см.здесь).

Все директивы, описанные здесь, могут использоваться как обычные директивы#прагмаи какоператор  _прагма(если включены вариады). Так, например, следующие директивы функционально идентичны:

    #pragma wave trace(enable)  

и

    _Pragma("wave trace(enable)")

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

Supported pragma's

прагматический вариант

прагматическое значение

Описание

след

включение/на/1
отключение/выключение/0

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

останавливаться

сообщение

Прекратить исполнениеи распечатать данное сообщение. Это очень полезно для целей прямой отладки.

система

командовать

Попробуйте создать команду в качестве новой команды операционной системы и перехватить сгенерированные stdout и stderr. Стадный вывод этой команды (если таковой имеется) ретокенизируется и используется в качестве замещающего текста для всей прагмы, вывод stderr игнорируется. Команда считается успешной, если/когда значение возврата равно нулю, в противном случае сообщается об ошибке.
Эта#прагмадоступна только в том случае, если указана опция командной строки -x.. Волновойдрайвер выдаст замечание, если этот аргумент командной строки не указан и#pragma wave system()Принята директива

таймер

restart/0

приостановить

Значениеперезапускаустанавливает текущее прошедшее время на 0 и перезапускает таймер.

Если значение не указано, то текущее прошедшее время печатается в потоке std::cerr.

Значенияприостанавливаютивозобновляютпозволяют временно остановиться и возобновить сроки.

вариант

строка: [0 | 1 | push | pop]
keep: [0 | 1 | 2 | push | pop]
output: ["filename" | null | default | push | pop]

Вариант(линия: ...)директива позволяет контролировать, будут ли генерироваться директивы#lineв выходном потоке. Укажите «0» или «1» в качестве параметра опции. Все остальные ценности будут признаны незаконными.

Вариант(сохранить: ...)директива позволяет контролировать количество белого пространства, генерируемого в выходном потоке. Значение 0 удаляет любое не нужное белое пространство, значение 1 сохраняет только комментарии, а значение 2 не удаляет белое пространство.

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

Значения прагмыpushиpopмогут использоваться для всех опцийстрока,сохранениеивыходдля хранения и восстановления текущего значения соответствующего опциона.

Все прагмы, не перечисленные здесь, но отмеченные как«волна», в настоящее время сообщаются как ошибки. Обработка всех оставшихся прагм зависит от константы компиляции<BOOST_WAVE_RETURN_PRAGMA_DIRECTIVES>, что позволяет указать, остались ли эти прагмы неизменными в выходном потоке или нет. Обратите внимание, что вариант оператора _Pragma всегда подвергается полной предварительной обработке, прежде чем сама прагма будет оценена. Вариант #pragma подлежит предварительной обработке только в том случае, если константа компиляции<BOOST_WAVE_PREPROCESS_PRAGMA_BODY>была указана во время компиляции. Для получения дополнительной информации о возможных константах компиляции смотритездесь.

Довольно легко реализовать свой собственный#pragma wave директивы. Все, что вам нужно сделать, это реализовать свою собственную функцию предварительной обработки крючкаinterpret_pragma(см.здесь), которая должна обрабатывать дополнительные директивы. Для примера, как это сделать, вы можете взглянуть на приложение драйвера волны, которое реализует все перечисленные выше прагмы с помощью предоставленной функцииinterpret_pragma(например, таймер волны#pragma()).директивы.


 

Статья Supported Pragma Directives раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:33:26/0.0076498985290527/0