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
);
Foi útil?

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
scroll top