2010-11-14 99 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