2010-11-14 98 views
3

在Windows头文件winnt.h中,HRESULT是定义如下:这个宏是做什么的? __success(返回> = 0)长

typedef __success(return >= 0) long HRESULT; 

做一些研究,我了解到,“__success”宏观调控是微软的部分源代码注释语言SAL并且在sal.h中定义。但是对于我的生活,我无法弄清楚它做了什么或者它是如何做到的。

在此先感谢。

托德

+0

看来,这个问题已经发布:http://stackoverflow.com/questions/1985521/explaining-the-declaration-definition-of-hresult __success什么也不扩展,因此不会影响代码。虽然它可以帮助微软的分析工具,但在我看来,它真的会让代码的可读性变差。 – Sabuncu 2010-11-18 08:29:27

回答

5

This blog post on MSDN解释到底是什么意思__success:它表示一个函数,如果它成功返回一个值HRESULT> = 0

注解是描述关于一段代码的东西只是一种方式 - 他们本身并不“做”任何事情,但可以通过外部工具来验证这些注释的语义。

+0

在发布我的问题之前,我已阅读博客文章。博客写得不好(突然开始谈论没有任何定义的扫描仪),我真的无法理解它。 具体来说,如果返回码小于零,会发生什么? – Sabuncu 2010-11-17 19:07:37

+0

@Toddintr:正如我所提到的,注释本身不会改变程序的行为方式。但有些工具(请参阅http://blogs.msdn.com/b/michael_howard/archive/2006/05/19/602077.aspx)可以使用这些注释来检查您的代码,并警告您可能会有不正确的用法。 – casablanca 2010-11-17 20:39:25