C28303

警告 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 **&amp;buff, int &amp;n)