C28303

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