Domanda

Non ci sono riferimenti costanti dichiarazioni di metodo MIDL ????

ad es.

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

per

HRESULT MyMethod(
    IID const &rclsid
);
È stato utile?

Soluzione

sugli istituti in realtà non supporta parametri di riferimento, supporta solo "in" e "out" i parametri. Quindi, se non passa in un riferimento, è zucchero sintattico per un puntatore al valore (la questione è osservabilità - se si dispone di una funzione di callback o interfaccia nella nostra firma del metodo, le modifiche a un riferimento sarebbe osservabile dalla richiamata, ma modifiche a un [out] parametro non sono visibili fino a quando la funzione ritorna.

Inoltre, la differenza tra "& const" e "const &" vengono persi. Se si guarda alla definizione di REFGUID, vedrai che usano solo una forma di "const" per il codice 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top