2
MIDL方法聲明中是否沒有常量引用?MIDL(常量)參考文獻
例如。
[id(1), helpstring("My Method")]
HRESULT MyMethod(
[in] IID & const rclsid
);
爲
HRESULT MyMethod(
IID const &rclsid
);
MIDL方法聲明中是否沒有常量引用?MIDL(常量)參考文獻
例如。
[id(1), helpstring("My Method")]
HRESULT MyMethod(
[in] IID & const rclsid
);
爲
HRESULT MyMethod(
IID const &rclsid
);
MIDL真的不支持參考的參數,它僅支持 「in」 和 「出」 的參數。所以如果你傳入一個引用,它只是一個指向該值的語法糖(問題是可觀察性 - 如果在我們的方法簽名中有一個回調函數或接口,則從回調中可以看到對引用的更改,但改變一個[out]參數是不可見的,直到函數返回。
此外,「&常量」和「常量&」丟失之間的差別。如果你看一下REFGUID的定義,你會看到他們只用一種形式的「常量」的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
d3d11.idl使用REFGUID:/我不知道該如何看待這個 做o〜o 相當不錯我猜是因爲它的工作原理;問題仍然存在,因爲我不明白如何REFGUID甚至可能,如果你不能,但我似乎無法找到一個例子...... – 2010-06-12 09:03:49
保羅改變了什麼?我使用的是一個而不是一個?我有時候那樣做... – 2010-06-12 18:14:29