Препроцессор Inno Setup: #pragma

Синтаксис

pragma-directive: <pragma-option>
<pragma-itokens>
<pragma-msg>
<pragma-verblev>
<pragma-include>
<pragma-spansymb>
pragma-option: pragma (option | parseroption) - <letter> (+ | -) [- <letter> (+ | -) ]...
pragma-itokens: pragma (inlinestart | inlineend) <expr>
pragma-msg: pragma (message | warning | error) <expr>
pragma-verblev: pragma verboselevel <expr>
pragma-include: pragma include <expr>
pragma-spansymb: pragma spansymbol <expr>

Описание

Инструкция pragma является специальной директивой. Пожалуйста, обратите внимание, если ISPP не удалось выполнить синтаксический анализ параметров этой директивы (в случае опечатки или неверно указанного параметра), то ошибки не произойдет, будет выдано только предупреждение. Это сделано для совместимости с другими препроцессорами, которые могут иметь собственные синтаксические лексемы директивы pragma.

Ключ pragma-option директивы pragma управляет параметрами, которые ISPP использует для чтения исходных данных. Каждому параметру соответствует определенная буква. Чтобы указать параметр, необходимо ввести имя группы (option или parseroption), а затем тире с последующим за ним буквой параметра. После буквы должен быть записан знак "плюс" (+) или "минус" (-). Знак "плюс" соответствует включению (on) параметра, а знак "минус" - отключению (off). Подобным образом можно одновременно указать несколько параметров в одной команде (см. синтаксис).

Первая группа параметров (option) управляет общими параметрами, тогда как вторая группа (parseroption) управляет параметрами, характерными для синтаксического анализа.

Ключ pragma-itokens используется для определения указателей директивы inline: начальный и конечный соответственно. После записи ключевого слова (inlinestart или inlineend) должно следовать выражение строкового типа (string), которое не должно возвращать пустую строку. Это позволяет использовать тот же самый ключ для начального и конечного указателя. По умолчанию используются {# (открывающая фигурная скобка и знак решётки) и } (закрывающая фигурная скобка) указатели.

Ключ pragma-msg предназначен для выдачи сообщения по указанному ключевому слову, следующего за именем директивы (message, warning или error). Все сообщения и предупреждения передаются в окно сообщений компилятора. Ошибки отображаются при помощи окон сообщений посредством компилятора. Выражение должно быть строкового типа. Смотрите также директиву error.

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

Ключ pragma include устанавливает переменную пути окружения. Выражение может содержать несколько путей, разделенных между собой точкой с запятой. Список этих каталогов используется ISPP при поиске файлов, указанных директивой include.

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

Параметры ISPP

c Указывает на то, что данные вывода препроцессора должны передаваться компилятору после завершения предварительной обработки. По умолчанию: on (вкл.).
e Указывает режим обработки пустых строк или строк с пробелами, должны ли они передаваться на выход препроцессора. По умолчанию: on (вкл.).
v Включение/Отключение подробного режима вывода сообщений. По умолчанию: off (откл.).

Параметры синтаксического анализа

b Упрощенная оценка логических операторов. По умолчанию: on (вкл.).
m Упрощенная оценка оператора умножения. (Выражение вида "0 * A" не будет вычисляться, т.к. результат уже и так известен - ноль.) По умолчанию: off (откл.).
p Паскалевский стиль представления строк (Pascal strings). Если параметр отключен (off), то используется Си стиль представления строк (вместе с escape-последовательностями). По умолчанию: on (вкл.).
u Разрешить не объявленные идентификаторы. Если встречается неизвестный идентификатор, то ISPP выводит сообщение об ошибке. В противном случае, когда параметр включен, автономный идентификатор (который не является вызовом функции) будет пустым. По умолчанию: off (откл.).

Уровни сообщений

0 Только основные сообщения
1 Сообщения о временных файлах, созданных #file
2 Сообщения #insert и #append
4 Сообщения #dim, #define и #undef
6 Сообщения об условном включении
8 Сообщения #emit
9 Сообщения вызова макросов и функций
10 Сообщения о размещении Local массива макросов

Примеры

#pragma parseroption -b- -u+
#pragma option -c-
#pragma warning "Variable value is: " + Str(MyVar)
#pragma option -v+
#pragma verboselevel 9
#pragma inlinestart "$("
#pragma inlineend ")"
#pragma include __INCLUDE__ + ";D:\INCLUDE"
#pragma spansymbol "_"

См. также:

Message
Warning
Error