Frage

Gibt es keine ständigen Verweise in MIDL Verfahren Erklärungen ????

zB.

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

für

HRESULT MyMethod(
    IID const &rclsid
);
War es hilfreich?

Lösung

MIDL nicht wirklich Referenzparameter unterstützt, es unterstützt nur „in“ und „out“ Parameter. Also, wenn Sie in einem Verweise übergeben tun, es ist nur syntaktischer Zucker für einen Zeiger auf den Wert (die Frage ist Beobachtbarkeit - wenn Sie eine Callback-Funktion oder Schnittstelle in unserer Methodensignatur haben, werden Änderungen an eine Referenz würden aus dem Rückruf zu beobachten sein, aber Änderungen an ein [out] Parameter sind, bis die Funktion zurückkehrt nicht sichtbar.

Darüber hinaus ist der Unterschied zwischen „& const“ und „const &“ verloren. Wenn Sie bei der Definition von REFGUID anschauen, werden Sie sehen, dass sie nur eine Form von „const“ verwenden für C ++ Code:

#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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top