__in __out __in_opt __allowed() 的目的是什么,它们是如何工作的?我应该在自己的代码中使用类似的构造吗?
题
其中一些预处理器定义位于 WinMain 函数和其他 Windows 库函数中。他们的目的是什么?它们如何工作?将它们写入您的实现或函数调用中是一个好习惯吗?
我的初步研究表明它们的设置相当于:
#define __in
#define __out
#define __in_opt
这意味着它们被替换为 没有什么 在预处理器通道上。它们只是一种文档方法,没有任何功能吗?
如果是这样,我可以看到像这样在线记录代码的优点。对于像 doxygen 这样的东西,你需要写出参数名称两次。因此,理论上这可以帮助减少重复并保持一致性......
我没有理论如何 __allowed()
应该可以工作。
其他提示
SAL 注释有两个用途:
- 通过 PREfast 进行静态分析(使用 /analyze 进行编译)
- 人类读者可以查看注释并弄清楚应该如何调用函数,并快速确定输入/输出参数。
当您的代码通过分析进行编译时,这些宏实际上会扩展为各种 declspec 表达式。我在代码中一直使用这些注释。
他们在Microsoft语义分析工具,因为代码标记使用。除非你打算自己使用这个工具,几乎没有目的使用它们。
这些Microsoft宏普遍扩大到什么,意味着作为提示给读者。
然而,我最后一次检查例如在MessageBox
参数的提示是完全错误的,暗示第一,第二和第三个参数进行了有益的默认值(如果指定0),而实际上它是可以使用默认值第一和第四个参数。也许还标题参数,默认为“错误”,但我从来没有发现有用的。所以,这只是一个微软的事,提示你不能和不应该依赖,随便误导视觉混乱。
干杯&第h。,
不隶属于 StackOverflow