c++ - 关于 ISupportErrorInfo::InterfaceSupportsErrorInfo() 实现的问题
问题描述
我现在是一名保姆,正在俯瞰一个巨大的旧时(始于上世纪)Windows 代码库,使用 C++ 和 C#,主要使用 COM 作为粘合剂。
我注意到ISupportErrorInfo::InterfaceSupportsErrorInfo()
实现(大约 400 个,哇)只是天真,就像这里一样:
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
{
static const IID* arr[] =
{
&IID_IStore,
};
for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
{
if (InlineIsEqualGUID(*arr[i], riid))
return S_OK;
}
return S_FALSE;
}
在我看来,曾几何时,有人(MVP,布道者)写了一本关于 COM 的书,然后每个人都只是不假思索地复制了这些行。
首先,如果我只有一个项目,为什么我需要一个数组?没有数组,我不需要 for 循环。
对我来说,看起来一行就可以了,例如。
return MyCoolHelper::InterfaceSupportsErrorInfo(riid, IID_IStore);
也许您已经看到了支持 1 个或多个 IID-s 的体面实现?
解决方案
推荐阅读
- python - 自动化无聊的东西 Collatz 项目
- c++ - 我在 TSP 的 C++ 解决方案中遇到转换错误
- haskell - 折叠无限列表时堆栈溢出?
- vba - VBA - 设置图片框大小以匹配绘制的项目
- batch-file - 使用for循环中的forfiles递归列出目录中的所有文件参数
- python - 为什么绑定pdst与目标ip地址并绑定广播mac地址而不是目标mac地址
- kubernetes - 通过 Kubernetes 上的 IPVS 负载均衡器公开多个服务(或服务实例)
- php - Envelope':在 php 中验证 SOAP 响应时,没有可用于验证根错误的匹配全局声明
- sql - 如何从父字符串中分离结果?
- javascript - 在javascript中使用while循环重新提示用户输入