idl_quote
Позволяет использовать конструкции IDL, которые не поддерживаются в текущей версии Visual C++ и передавать их в созданный IDL-файл.
Синтаксис
[ idl_quote(text) ]
Параметры
text
Имя атрибута, которое предполагается, что компилятор Microsoft C++ передается в созданный IDL-файл, не возвращая ошибку компилятора.
Замечания
Если атрибут C++ idl_quote используется как автономный атрибут (с запятой после закрывающей скобки), текст помещается в объединенный IDL-файл как есть. Если idl_quote используется в символе, текст помещается в блок атрибутов для этого символа.
Пример
В следующем коде показано, как можно указать неподдерживаемый атрибут (с помощью которого поддерживается), а также как определить и использовать неопределенную конструкцию IDL:
// cpp_attr_ref_idl_quote.cpp
// compile with: /LD
#include <unknwn.h>
[module(name="MyLibrary")];
[export]
struct MYFLOT {
int i;
};
[export]
struct MYDUB {
int i;
};
[idl_quote("typedef union _S1_TYPE switch (long l1) U1_TYPE { case 1024: \
struct MYFLOT f1; case 2048: struct MYDUB d2; } S1_TYPE;") ];
typedef struct _S1_TYPE {
long l1;
union {
MYFLOT f1; MYDUB d2; } U1_TYPE;
} S1_TYPE;
[uuid("2F5F63F1-16DA-11d2-9E7B-00C04FB926DA"), object]
__interface IStatic{
HRESULT Func1([idl_quote("in")] int i);
HRESULT func( S1_TYPE* myStruct );
};
Этот код приводит MYFLOT
к тому, MYDUB
что запись текста помещается в созданный IDL-файл. Параметр name принудительно помещается текст перед тем, что ссылается на имя в созданном IDL-файле. Параметр зависимостей заставляет определения списков зависимостей помещаться перед текстом в созданном IDL-файле.
Требования
Контекст атрибута | Значение |
---|---|
Относится к | В любом месте |
Повторяемый | No |
Обязательные атрибуты | нет |
Недопустимые атрибуты | нет |
Дополнительные сведения см. в разделе Контексты атрибутов.