Вопрос

Есть ли нет постоянных ссылок в объявлениях MIDL-метода ????

например.

[id(1), helpstring("My Method")]
HRESULT MyMethod(
    [in] IID & const rclsid
);

для

HRESULT MyMethod(
    IID const &rclsid
);
Это было полезно?

Решение

MIDL на самом деле не поддерживает эталонные параметры, он поддерживает только параметры «в» и «OUT». Поэтому, если вы проходите ссылку, это просто синтаксический сахар для указателя на значение (проблема наблюдаемости - если у вас есть функция обратного вызова или интерфейс в нашем методе подпись, изменения ссылки будут наблюдаены из обратного вызова, но Изменения параметра [OUT] не видны до возврата функции.

Кроме того, разница между «& Const» и «Const &» потеряны. Если вы посмотрите на определение Refguid, вы увидите, что они используют только одну форму «Const» для C ++:

#ifdef __midl_proxy
#define __MIDL_CONST
#else
#define __MIDL_CONST const
#endif

#ifndef _REFGUID_DEFINED
#define _REFGUID_DEFINED
#ifdef __cplusplus
#define REFGUID const GUID &
#else
#define REFGUID const GUID * __MIDL_CONST
#endif
#endif
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top