标签: microsoft-sal

__in,__ out,__ in_opt的含义

在函数参数中的变量之前使用这些关键字的含义是什么?

  • __in
  • __out
  • __in_opt

visual-c++ microsoft-sal

6
推荐指数
2
解决办法
6465
查看次数

SAL(源注释语言)的目的是什么,SAL 1和2之间有什么区别?

如标题中所述:

SAL(源注释语言)的目的是什么?SAL 1和SAL 2之间有什么区别?

我理解使用的基础知识,这有助于突出传递给函数的每个变量的目的以及静态代码分析的各种其他内容,但它实际上有多大差异(忽略了参数要求的增加清晰度)该项目的其他程序员)?

如果我有以下原型:

_Success_(return == 1) 
int TestFunction( _In_ int* pTest, _Inopt_ char* pOptional );
Run Code Online (Sandbox Code Playgroud)

这应该"告诉"静态分析器该函数在成功操作时将返回1,这pTest是一个必须不是指针,nullptr而且pOptional指针可能是也可能不是nullptr.但是,静态分析器不能从函数定义本身获取此信息吗?此外,它如何处理获得的信息,例如成功标准?

此外,为什么会出现SAL 1和SAL 2,为什么微软决定改变他们命名了他们的宏的方式之间的差异(即从__out_Out___success_Success_?)

我很抱歉,如果在MSDN上详细描述了这一点,但我无法在StackOverflow上找到它或任何其他问题并提供详细的答案,所以我想我会问我希望能满足我的好奇心.

在此先感谢您的时间!

c++ visual-studio microsoft-sal sal

6
推荐指数
1
解决办法
2651
查看次数

__deref_out_opt和__deref_opt_out有什么区别?

以下SAL注释有什么区别?

void foo(__deref_out_opt PSTR* bar);

void foo(__deref_opt_out PSTR* bar);
Run Code Online (Sandbox Code Playgroud)

windows annotations static-analysis microsoft-sal

5
推荐指数
1
解决办法
2478
查看次数