什么是[in]和[out]?

时间:2013-05-23 16:25:23

标签: c++

我遇到过这段代码,但我之前没见过[in]或[out]。它们是什么?

HRESULT QueryInterface([in] REFIID riid, [out] void **ppvObject) {

}

3 个答案:

答案 0 :(得分:4)

这些是directional IDL attributes。它们表明数据传递的方向。

答案 1 :(得分:3)

根据您的问题,代码可能无法编译。话虽如此,虽然不常见,但您可能会遇到以下代码:

HRESULT QueryInterface(IN REFIID riid, OUT void **ppvObject)

编译,因为某处IN和OUT是#define' d(为空)。有时使用指针来指示参数是输入(只读)还是输出(写入)或两者都有。该指示是为了读者的利益。

答案 2 :(得分:2)

它表示正在向函数发送[in]的值,或者在[out]的情况下,它正在被更改,因此[out] put