HRESULT hr = S_OK; //initialization`
if (int i == 5)
{
hr = 1; //Is it correct usage?
}
if (hr == 1)
cout<<"The value of i is 5";
因为我总是听到 HRESULT
以 E_TIMEOUT
等字符串输出,是否像我使用的那样使用数字是正确的。
最佳答案
这里的主要问题是您将 HRESULT
用于什么目的?
您显然可以为 HRESULT
分配任何值,但为什么不直接使用 int
呢?
HRESULT
用作传达函数调用成功或失败的方式。通常 HRESULT
是 S_OK
(0) 或错误(负数)。 S_FALSE
(1,不是失败也不是成功)很少使用。
当与 COM 或 .NET 一起使用时,调用者通常只检查函数是成功还是失败。默认情况下,当编码(marshal)返回 HRESULT
的函数时,.NET 的编码(marshal)处理程序会将函数转换为 void
函数,如果结果为负则抛出异常,如果为负则丢弃结果非负。
如果您的代码属于这种情况,则没有必要给出特定的正值。如果您不使用它来实现互操作性,您可能根本不应该使用 HRESULT
。
关于c++ - 如何在 C++ 中使用 HRESULT 条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60023646/