2

MIDL メソッド宣言に定数参照はありませんか????

例えば。

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

為に

HRESULT MyMethod(
    IID const &rclsid
);
4

1 に答える 1

3

MIDL は実際には参照パラメーターをサポートしていません。"in" パラメーターと "out" パラメーターのみをサポートしています。したがって、参照を渡した場合、それは値へのポインターの構文糖衣にすぎません (問題は可観測性です。メソッド シグネチャにコールバック関数またはインターフェイスがある場合、参照への変更はコールバックから観測可能になりますが、 [out] パラメータへの変更は、関数が戻るまで表示されません。

また、「& const」と「const &」の違いがなくなります。REFGUID の定義を見ると、C++ コードに 1 つの形式の "const" しか使用されていないことがわかります。

#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
于 2010-06-12T13:42:32.430 に答える