ATL,添加方法,参数有in和没in,感觉没什么区别啊!

dreamgis 2012-04-22 01:02:11
初学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
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:
in out只是个标记,用来说明参数是输入还是输出,宏定义都是空


宏定义都是空,是什么意思?谢谢
[/Quote]
只是作为标注提示的作用
编译预处理时会被直接忽略
dreamgis 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
RPC 会针对in,out 做处理,不是你的程序。
所以 in,out 只是 COM 接口的契约。
[/Quote]

“RPC”晕了···
要学的东西还多啊
Saleayas 2012-04-22
  • 打赏
  • 举报
回复
RPC 会针对in,out 做处理,不是你的程序。
所以 in,out 只是 COM 接口的契约。
dreamgis 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
The [in] attribute is applied to a parameter by default when no directional parameter attribute is specified.
[/Quote]
谢谢你的帮助! 再请你帮我看看这个问题
http://topic.csdn.net/u/20120422/00/5b95e7fe-6a9a-4d1c-b9d8-cc30ff0e4f6e.html?95961
oyljerry 2012-04-22
  • 打赏
  • 举报
回复
只是为了语法上让你理解,其实没做什么处理
tcige 2012-04-22
  • 打赏
  • 举报
回复
The [in] attribute is applied to a parameter by default when no directional parameter attribute is specified.
dreamgis 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
in out只是个标记,用来说明参数是输入还是输出,宏定义都是空
[/Quote]

宏定义都是空,是什么意思?谢谢
Eleven 2012-04-22
  • 打赏
  • 举报
回复
in out只是个标记,用来说明参数是输入还是输出,宏定义都是空

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧