我遇到了这段代码,但我以前没有见过 [in] 或 [out]。这些是什么?
HRESULT QueryInterface([in] REFIID riid, [out] void **ppvObject) {
}
我遇到了这段代码,但我以前没有见过 [in] 或 [out]。这些是什么?
HRESULT QueryInterface([in] REFIID riid, [out] void **ppvObject) {
}
这些是定向 IDL 属性。它们指示数据传递的方向。
正如您的问题中所提供的,代码可能无法编译。话虽这么说,虽然不常见,但您可能会遇到以下代码:
HRESULT QueryInterface(IN REFIID riid, OUT void **ppvObject)
编译是因为某处 IN 和 OUT 是#define'd(为空)。这有时通过指针来完成,以指示参数是输入(只读),还是输出(写入),或者两者兼而有之。该指示是为了读者的利益。
它表示正在发送[in]
给函数的值,或者在[out]
它被更改的情况下,[out]put 也是如此