c++ - 为什么 Windows API 提供 2 种“返回”值的方法?
问题描述
例如,GetWindowThreadProcessId()
接受 2 个值,一个窗口句柄和一个接收返回值的指针(函数也总是returns
值)。
有这两种选择有什么意义?我什么时候应该使用指针来“返回”一个值而不是实际返回它?
解决方案
他们不是一回事。
“out 参数”接收进程标识符。返回值是线程标识符。
真正的问题是为什么要使用两个单独的“给我 valuez”机制。您会认为两个“出局论点”可能更加一致。
答案是:人类。我们犯错误。我们制作不一致的 API。它发生了。
有人认为没有错误码可以返回,所以你还不如使用返回值。但是,哎呀,我们还有其他东西要返回,而 C 没有元组,所以让我们改用“输出参数”。
我们有时称这种事情为“历史原因”。你的旅费可能会改变。
我可以告诉你,我个人不会在现代 C++ 中以这种方式设计这个函数。但那是现在,在 2018 年,我不做操作系统(oof,你能想象吗?)。
在一天结束时,坦率地说,没有造成任何伤害。
推荐阅读
- php - 从数据库中选择希伯来语数据时出现乱码
- java - Dropwizard JDBI 3 ResultSetMapper 忽略字段
- java - Java中的字符不随后增量更新
- python - Python Celery:状态更改后更新 django 模型
- java - toast msg 为我的复选框验证而疯狂
- sendgrid - SendGrid 事务模板 - 地址和取消订阅链接断开
- php - 将字符串与二进制照片 base64 编码 PHP 进行比较
- android - 在不上传 APK 的情况下测试 google play 服务
- c# - ScrollViewer 不能与 ItemsControl 一起使用
- python - 在 OpenGL 中更新 Shader Uniform 不起作用