ATL,添加方法,参数有in和没in,感觉没什么区别啊!
初学ATL做com, 对方法参数有in和没in分别做了试验,结果没什么区别,他们的区别在哪里呢?
idl:
[id(2), helpstring("方法Add")] HRESULT Add(LONG a, LONG b, [out,retval] LONG* pVal);
[id(3), helpstring("方法Add2")] HRESULT Add2([in] LONG a, [in] LONG b, [out,retval] LONG* pVal);
.cpp
STDMETHODIMP CCalc::Add(LONG a, LONG b, LONG* pVal)
{
*pVal = a + b;
return S_OK;
}
STDMETHODIMP CCalc::Add2(LONG a, LONG b, LONG* pVal)
{
*pVal = a + b;
return S_OK;
}
C#测试:
Calc c = new Calc();
int ret = c.Add(2, 3); //ret等于5
ret = c.Add2(3, 3); //ret等于6