Question

Y at-il aucune référence constante dans les déclarations de méthode MIDL ????

par exemple.

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

pour

HRESULT MyMethod(
    IID const &rclsid
);
Était-ce utile?

La solution

MIDL ne supporte pas vraiment les paramètres de référence, il ne supporte que « dans » et « hors » paramètres. Donc, si vous passez dans une référence, il est le sucre juste syntaxique pour un pointeur sur la valeur (la question est observabilité - si vous avez une fonction de rappel ou d'une interface dans notre signature de la méthode, des modifications à une référence serait observable à partir du rappel, mais des modifications à un [out] paramètre ne sont pas visibles jusqu'à ce que la fonction retourne.

En outre, la différence entre "& const" et "const &" sont perdus. Si vous regardez la définition de REFGUID, vous verrez qu'ils utilisent une seule forme de « const » pour le code 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top