警告 C28303:对于 C++ 引用参数 <参数名称>,找到一个不明确的运算符 _Deref_(在 <批注> 中)。
此警告类似于警告 C28302,并且它在对于一个参数适用一个额外的 _Deref_ 级别时报告。
当处理引用参数时,SAL2 不需要使用 _Deref_ 的额外级别。对于打算注释何种级别的取消引用,此特殊注释是不明确的。它有时可能需要使用 _At_ 引用被注释的特定对象。
示例
在下面的代码中,因为 __deref_out_ecount(n) 的使用是不明确的,所以会生成此警告:
void ref(__deref_out_ecount(n) int **&buff, int &n)
上面的注释也可以被解释为:
对到整数的数组 (大小为 n) 指针的引用 (SAL1 解释)
对到整数数组 (大小为 n) 的指针的引用 (SAL2 解释)
以下之一可以更正此警告:
void ref(_Out_writes_(n) int **&buff, int &n)
// or
_At_(*buff), _Out_writes(n)) void ref(int **&buff, int &n)