Поделиться через


Директива #define (константная)

Директива препроцессора, которая присваивает константе в приложении понятное имя.

#define identifiertoken-string

Параметры

Элемент Описание
Идентификатор
Идентификатор константы.
строка токена [необязательно]
Значение константы. Этот параметр состоит из ряда токенов, таких как ключевые слова, константы или полные операторы. Один или несколько пробелов должны отделять этот параметр от параметра идентификатора ; этот пробел не считается частью заменяемого текста, а также не является пробелом после последнего маркера текста.
Если исключить этот параметр, все экземпляры параметра идентификатора удаляются из исходного файла. Идентификатор остается определенным и может быть протестирован с помощью директив #if, определенных, #ifdef и #ifndef.

Комментарии

Все экземпляры параметра идентификатора , возникающие после директивы #define в исходном файле, будут заменены значением параметра token-string . Идентификатор заменяется только в том случае, если он формирует токен; Например, идентификатор не заменяется, если он отображается в комментарии, в строке или в составе более длинного идентификатора.

Директива #undef предписывает препроцессору забыть определение идентификатора; Дополнительные сведения см. в разделе Директива #undef (DirectX HLSL).

Определение констант с помощью параметра компилятора /D имеет тот же эффект, что и использование директивы #define в начале файла. С помощью параметра /D можно определить до 30 констант. Примеры использования см. в разделе Примеры #ifdef и ).

Примеры

В следующем примере идентификатор WIDTH определяется как целочисленная константа 80, а затем определяет LENGTH в терминах WIDTH и целочисленной константы 10.

#define WIDTH       80
#define LENGTH      ( WIDTH + 10 )

Каждый последующий экземпляр LENGTH заменяется на (WIDTH + 10), а каждый последующий экземпляр WIDTH + 10 заменяется выражением (80 + 10). Скобки вокруг WIDTH + 10 важны, так как они управляют интерпретацией в таких инструкциях, как ниже.

var = LENGTH * 20;

После этапа предварительной обработки оператор становится следующим, который имеет значение 1800.

var = ( 80 + 10 ) * 20;

Без круглых скобок результат будет следующим, который имеет значение 280.

var = 80 + 10 * 20;

Директивы препроцессора (DirectX HLSL)

Перегрузки #define

Директива #undef (DirectX HLSL)