Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在函数参数中的变量之前使用的这些关键字是什么意思?
__in
__out
__in_opt
这些是 Microsoft 的 SAL 注释中的一些较旧的装饰宏(较新的现在遵循不同的大小写,以大写字母开头)。这些对编译没有实际影响(在 VS 2010 下它们甚至没有扩展),它们用于内联 API 文档。
_in
_opt
NULL
你可以在这里得到旧装饰品的完整解释。
正如 Nercolis 所回答的,这些是 SAL 注释属性。但是,这些不仅是内部的或仅用于API 文档。真正的目的是为了代码分析。当您使用/analyze编译器选项(项目属性,代码分析 -> 常规)构建项目时,这些在查找编码问题方面起着重要作用。
例如,如果一个特定的指针参数说,__in那么它不能被传递一个空指针。该函数不会检查 null 并且可能会导致 SEH。__in_opt参数可能为空。当编译器发现一些问题时,它会将其报告为警告。见这篇文章。