为什么Windows API提供两种"返回"值的方法?

-1 c c++ pointers return return-value

例如,GetWindowThreadProcessId()接受2个值,一个Window句柄和一个接收返回值的指针(该函数也总是returns值).

有这两种选择有什么意义?什么时候我应该使用指针"返回"一个值而不是实际返回它?

Lig*_*ica 5

他们不是一回事.

"out参数"接收进程标识符.返回值是线程标识符.

真正的问题是为什么要使用两个单独的"给我价值"机制.你认为两个"外出论点"可能更加一致.

答案是:人类.我们犯错误.我们制作不一致的API.它发生了.

有人认为没有错误代码可以返回,所以你不妨使用返回值.但是,oops,我们还有别的东西可以返回,而C没有元组,所以让我们使用"out argument"代替.

我们有时称这种事为"历史原因".你的旅费可能会改变.

可以告诉你,我个人不会在现代C++中以这种方式设计这个功能.但现在,在2018年,我并没有制作操作系统(oof,你能想象吗?).

坦白说,在一天结束时,没有造成任何伤害.