Атрибут const
Константная ключевое слово изменяет тип объявления типа или тип параметра функции, предотвращая изменение значения.
const const-type identifier = const-expression ;
[ typedef [ , type-attribute-list ] ] const const-type declarator-list;
[ typedef [ , type-attribute-list ] ] pointer-type const declarator-list;
[ [ function-attr-list ] ] type-specifier [ ptr-decl ] function-name(
[ [ parameter-attribute-list ] ] ) const;
const-type [declarator], [ [ parameter-attribute-list ] ] pointer-type const [declarator], ...);
-
const-type
-
Задает допустимое целое число MIDL, символ, строку или логический тип. Допустимые типы MIDL: small, short, long, char, charâ *, wchar_t, wchar_t *, byte, byteâ *и voidâ*. Целочисленный и символьный типы могут быть подписаны или без знака.
-
identifier
-
Указывает допустимый идентификатор MIDL. Допустимые идентификаторы MIDL состоят из 31 буквенно-цифровых символов и символов подчеркивания и должны начинаться с буквы или символа подчеркивания.
-
const-expression
-
Указывает выражение, идентификатор, числовую или символьную константу, соответствующую указанному типу: константные целочисленные литералы или константные целочисленные выражения для целочисленных констант; Логические выражения, которые можно вычислить при компиляции для логических типов; односимвленные константы для типов символов ; и строковые константы для типов [string] . Тип void * можно инициализировать только значением NULL.
-
type-attribute-list
-
Указывает один или несколько атрибутов, применяемых к типу.
-
тип указателя
-
Указывает допустимый тип указателя MIDL.
-
declarator и declarator-list
-
Указывает стандартные деклараторы C, такие как идентификаторы, деклараторы указателей и деклараторы массива. Дополнительные сведения см. в статье Атрибуты массива и Sized-Pointer, массивы и указатели. Список деклараторов состоит из одного или нескольких деклараторов, разделенных запятыми. Идентификатор parameter-name в деклараторе функции является необязательным.
-
function-attr-list
-
Задает ноль или несколько атрибутов, применяемых к функции. Допустимые атрибуты функции: [callback], [local]; атрибут указателя [ссылка], [уникальный], или [ptr]; и атрибуты использования [string], [ignore] и [context_handle].
-
описатель типа
-
Указывает base_type, структуру, объединение, тип перечисления или идентификатор типа. Необязательная спецификация хранилища может предшествовать спецификатору типа.
-
ptr-decl
-
Указывает ноль или более деклараторов указателей. Декларатор указателя совпадает с декларатором указателя, используемым в C. Он создается на основе конструктора * , модификаторов, таких как far, и квалификатора const.
-
имя функции
-
Указывает имя удаленной процедуры.
-
parameter-attribute-list
-
Указывает ноль или более направленных атрибутов, атрибутов полей, атрибутов использования и атрибутов указателя, подходящих для указанного типа параметра. Разделяйте несколько атрибутов запятыми.
MIDL позволяет объявлять константные целочисленные, символьные, строковые и логические типы в тексте интерфейса IDL-файла. Объявления типов Const воспроизводятся в созданном файле заголовка в виде директив #define.
Компиляторы DCE IDL не поддерживают константные выражения. Поэтому эта функция недоступна при использовании параметра / osf компилятора MIDL.
Ранее определенную константу можно использовать в качестве назначенного значения последующей константы. Значение константного целочисленного выражения автоматически преобразуется в соответствующий целочисленный тип в соответствии с правилами преобразования C.
Значение символьной константы должно быть символом ASCII в одной кавычках. Если константа символа является символом с одной кавычками ('), символ обратной косой черты (\) должен предшествовать символу с одной кавычками, как в \'.
Значением символьной строковой константы должна быть строка в двойных кавычках. В строке символ обратной косой черты (\) должен предшествовать литеральной двойной кавычки ( " ), как в \". В строке символ обратной косой черты (\) представляет escape-символ. Строковые константы могут содержать до 255 символов.
Значение NULL является единственным допустимым значением для констант типа void *. Все атрибуты, связанные с объявлением const, игнорируются.
Компилятор MIDL не проверка для ошибок диапазона при инициализации const. Например, если указать "const short x = 0xFFFFFFFF;", компилятор MIDL не сообщает об ошибке, и инициализатор воспроизводится в созданном файле заголовка.
const void * p1 = NULL;
const char my_char1 = 'a';
const char my_char2 = my_char1;
const wchar_t my_wchar3 = L'a';
const wchar_t * pszNote = L"Note";
const unsigned short int x = 123;
typedef [string] const char *LPCSTR;
HRESULT GetName([out] wchar_t * const pszName );