解释HRESULT的声明/定义

Agn*_*ian 4 c c++ winapi hresult visual-studio-2008

我只是看了HRESULTVS2008 中的定义.WinNT.h有以下行:

typedef __success(return >= 0) long HRESULT;
Run Code Online (Sandbox Code Playgroud)

究竟是什么意思?它对我未经训练的眼睛看起来甚至不像C或C++

jas*_*son 6

这是一个注释.简而言之,

__success(expr)
Run Code Online (Sandbox Code Playgroud)

表示expr描述功能被认为成功的条件.对于返回的函数HRESULT,该条件是返回值(因为HRESULT是a long)是非负的.返回的所有函数HRESULT都因此而应用此注释typedef.

可能更多的细节比你想要的关于SAL注释的 MSDN ,从Win32成功和失败注释的HRESULT的演变.