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

Синтаксис

define-directive: <variable-definition>
<macro-definition>
<default-visibility-set>
variable-definition: (define | :) [private | protected | public] <ident> [[ <expr> ]] [[=] <expr>]
macro-definition: (define | :) [private | protected | public] <ident> ( [<formal-macro-args>] ) <expr>
default-visibility-set: (define | :) private | protected | public
formal-macro-args: <formal-macro-arg> [, <formal-macro-arg>]...
formal-macro-arg: <by-val-arg> | <by-ref-arg>
by-val-arg: [<type-id>] <ident> [= <expr>]
by-ref-arg: [<type-id>] * <ident>
type-id: any | int | str | func

Описание

Первый элемент синтаксического выражения ("variable-definition") определяет переменную с именем ident (сокр. от identifier - идентификатор), или принимает значение элемента массива с именем ident (для объявления переменной массива используйте директиву dim вместо директивы define). Область видимости переменной задаётся одним из ключевых слов public, protected или private, в противном случае область видимости переменной принимается по умолчанию.

Второй элемент синтаксического выражения ("macro-definition") определяет пользовательскую функцию с именем ident. При записи пользовательской функции не должно быть пробела между именем функции и открывающей круглой скобкой, иначе инструкция будет обработана как объявление переменной.

Третий элемент синтаксического выражения ("default-visibility-set") устанавливает область видимости по умолчанию для всех последующих переменных и пользовательских функций в данном файле сценария. Если область видимости не объявляется, то по умолчанию принимается область видимости private.

Примеры

; Объявляем переменную с именем MyAppName
; и присваиваем ей значение "My Program".
#define MyAppName "My Program"

; Объявляем переменную с именем MyAppExe
; и формируем имя исполняемого файла.
#define MyAppExe MyAppName + ".exe"

; Объявляем переменную с именем MyAppVer и присваиваем ей значение,
; которое вернёт функция GetFileVersion() (получение версии файла MyAppExe).
#define MyAppVer GetVersionNumbersString(MyAppExe)

; Объявляем массив с именем MyArray и
; индексу массива 0 присваиваем значение 15.
#define MyArray[0] 15

; Объявляем переменную со значением арифметического действия - умножение.
; А и В целочисленный тип данных.
#define Multiply(int A, int B = 10) A * B

См. также:

dim
undef
Область видимости переменных
Пользовательские функции