【发布时间】:2014-02-17 18:32:20
【问题描述】:
对于很多 WINAPI 方法,返回值为 0(失败)或非零(成功)。例如:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682565(v=vs.85).aspx
返回值
如果函数成功,则返回值非零。 如果函数失败,返回值为零。
我的问题是,对于这样的方法,用TRUE(BOOL 的值等于 1)测试返回值是否正确?还是改为测试返回值是否为!FALSE 更正确?
另一个不相关的问题是,当返回值非零时,它到底是什么?它可以是任何值还是来自一组值?
【问题讨论】:
-
它说非零。这绝不意味着
TRUE。 -
如果文档说非零返回意味着“OK”,那么这就是你所知道的——如果不同的值意味着任何可以依赖的东西,那么它将被记录在案——或者在至少如果没有记录,你应该忽略这种可能性。
-
我几乎总是将返回值测试为
if(!SomeFunction()) -
注意这一点:一些WINAPI方法返回0表示失败,其他返回0表示成功。检查 0 而不是用 FALSE 混淆每个人会更清楚。如果您使用 API 并且接口需要 BOOL 结果,那么请务必使用 TRUE 和 FALSE。
-
所以总结起来我应该检查它为
!FALSE?