这些在 minwindef.h 中定义(通常位于 Program Files (x86)\Windows Kits\8.1\Include\shared\minwindef.h)
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif
我经常看到用这些宏修饰的参数,如下所示:
void SomeFunction(IN const MyClass& obj)
这些宏的意义是什么?为什么要用它来修饰参数?
为了与标准 C 和标准兼容,这些宏可以定义为空
C++ 或者它们可以被定义为 MS 特定的SAL(微软源代码注释语言)注释 https://msdn.microsoft.com/en-us/library/ms235402.aspx
for 注释函数参数和返回值 https://msdn.microsoft.com/en-us/library/hh916382.aspx, e.g.
#define IN _In_
#define OUT _Out_
具有记录的含义:
_In_
注释标量、结构、结构指针等输入参数。可以明确地用于简单标量。该参数必须在预置状态下有效,且不可修改。
_Out_
注释标量、结构、结构指针等输出参数。不要将此应用于无法返回值的对象,例如按值传递的标量。该参数不必在预状态下有效,但必须在后状态下有效。
当然,SAL 注释由 MS 编译器解析。 MSDN Windows API 文档
使用 SAL 注释,例如 https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679(v=vs.85).aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)