Директива #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;