MIDL (Constante) Referências
Pergunta
Não há constantes referências em MIDL declarações de método????
por exemplo.
[id(1), helpstring("My Method")]
HRESULT MyMethod(
[in] IID & const rclsid
);
para
HRESULT MyMethod(
IID const &rclsid
);
Solução
MIDL realmente não suporte a parâmetros de referência, ele suporta apenas "na" e "parâmetros".Por isso, se você passar em uma referência, é apenas um açúcar sintático para um ponteiro para o valor (o problema é observação - se você tiver uma função de retorno de chamada ou interface no nosso método de assinatura, mudança de referência seria observável a partir da chamada de retorno, mas muda para um parâmetro [out] não são visíveis até que a função retorna.
Além disso, a diferença entre "& const" e "const &" são perdidas.Se você olhar para a definição de REFGUID, você vai ver que eles só usam uma forma de "const" para 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow