警告的 C28303:对于 C++ 引用参数 <parameter_name> ,不明确的 _Deref_ 运算符在 <批注> 中。
,当 _Deref_ 中有一个额外的级别。参数时,使用此警告与警告 C28302 和报告。
,当托管引用参数时, SAL2 不需要使用 _Deref_ 中有一个额外的级别。此特定批注不明确被取消引用的级别旨在说明。使用 _At_ 引用将批注的特定对象可能是必需的。
示例
,因为使用 __deref_out_ecount(n) 不明确,下面的代码生成此警告:
void ref(__deref_out_ecount(n) int **&buff, int &n)
上面的批注既可以解释为如下所示:
对于某些的引用 (n) 为整数 (SAL1 的指针进行了说明)
为指针的对 increase(n) 整数 (SAL2 说明)
下面可以之一来更正此警告:
void ref(_Out_writes_(n) int **&buff, int &n)
// or
_At_(*buff), _Out_writes(n)) void ref(int **&buff, int &n)