#ifndef _HRESULT_DEFINED
#define _HRESULT_DEFINED
#ifdef __midl
typedef LONG HRESULT;
#else
typedef __success(return >= 0) long HRESULT;
#endif // __midl
#endif // !_HRESULT_DEFINED
#define _HRESULT_DEFINED
#ifdef __midl
typedef LONG HRESULT;
#else
typedef __success(return >= 0) long HRESULT;
#endif // __midl
#endif // !_HRESULT_DEFINED
#define IN
#define OUT
void Function(IN int a, OUT int* b);
在这里IN和OUT也没有实际意义,只是为了让人知道参数是用做输入还是输出。
"目的是说明HRESULT类型大于等于0表示成功。",这句话我有点疑问:比如:HRESULT hRet = -10;hRet被给与了一个小于0的值,这样子合法吗?
HRESULT Caller()
{
...
HRESULT hRet = fun();
return hRet;
}这里的fun()可以返回小于0的值,只是一旦fun()返回的值小于0,就表示调用Caller()没有成功?
针对这个例子,我想再问一个问题:由于#define IN
#define OUT 对IN和OUT的定义是空,即IN和OUT什么也不代表,那么
void Function(IN int a, OUT int* b);
在编译器看来是不是就是:
void Function(int a, int* b);
??
代码中出现IN和OUT只是告诉代码阅读者这两个参数一个是输入型,一个是输出型呢?
11L:对。
12L:就是这个意思。