警告 C28303

C++ 参照パラメーター <parameter_name>の場合、'annotation' にあいまいな_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)