在变量之前使用这些关键字的含义是什么? 功能参数?
__in
__out
__in_opt
答案 0 :(得分:10)
这些是来自微软SAL注释的一些较旧的装饰宏(the newer ones现在遵循不同的外壳,从首都开始)。这些对编译没有实际影响(在VS 2010下它们甚至没有扩展),它们用于内联API文档。
__in
:此参数是函数的输入(只读,调用者已初始化)。__out
:此参数包含函数返回时的输出(只写,调用者初始化)。__in_opt
:由_in
和_opt
形成的复合注释,_opt
表示该参数是可选的,可以设置为默认值(通常为{{1} }})。您可以在此处获得旧装饰here的完整说明。
答案 1 :(得分:4)
正如Nercolis所回答的,这些是SAL注释属性。但是,这些内部或仅适用于 API文档。真正的目的是代码分析。当您使用/analyze编译器选项(项目属性,代码分析 - >常规)构建项目时,这些选项在查找编码问题中起着重要作用。
例如,如果特定指针参数显示__in
,则不能传递空指针。该函数不会检查null并可能导致SEH。 __in_opt
参数可以为null。当编译器发现某些问题时,它会将其报告为警告。请参阅this article。