Pregunta

¿No hay referencias constantes en declaraciones de métodos MIDL ????

por ejemplo.

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

para

HRESULT MyMethod(
    IID const &rclsid
);
¿Fue útil?

Solución

MIDL no muy compatible con los parámetros de referencia, sólo es compatible "en" y "fuera" parámetros. Por lo que si pasa una referencia, que es el azúcar solo sintáctica para un puntero al valor (el tema es observabilidad - si tiene una función de devolución de llamada o la interfaz en nuestra firma del método, se convierte en una referencia serían observables desde la devolución de llamada, pero cambios en un parámetro [out] no son visibles hasta que la función devuelve.

Además, la diferencia entre "& const" y "const &" se pierden. Si nos fijamos en la definición de REFGUID, verá que sólo utilizan una forma de "const" para el código 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top