这些预处理器定义中的一些位于WinMain函数和其他窗口库函数中。它们的目的是什么?它们如何工作?将它们编写到您的实现或函数调用中是否是最佳实践?
我的初步调研表明,它们简单地设置为相当于:
#define __in
#define __out
#define __in_opt
这意味着它们在预处理(pass)阶段被替换为nothing。它们只是一种文档编写方法,没有任何功能吗?
如果是的话,我可以看到像这样内联编写代码的优点。使用像doxygen这样的工具,您需要两次编写参数名称。因此,理论上这可以帮助减少重复,并保持一致性......
我不知道__allowed()
应该如何工作。
void foo( _In_opt_ int* p ) { *p = 42; }
。参数p
被标记为可选,但实现假定它始终有效。代码分析将识别该问题并提供诊断信息。 - IInspectablevoid foo( _In_opt_ int* p ) { int i = *p; }
,因为它是一个_In_
参数。 - IInspectableMessageBox
函数的注释是完全错误的(或者在那篇回答时是错误的,而且已经错误了很长时间)。大多数注释都来自于微软,它们是不可靠的。这还需要增加不必要的废话/视觉杂乱和对C++没有贡献。 - Cheers and hth. - Alf