C28303

avviso C28303: Per il parametro-riferimento di C++ <parameter_name>, un operatore ambiguo _Deref_ è stato trovato in <annotation>.

L'avviso simile all'avviso C28302 viene visualizzato quando un ulteriore livello di _Deref_ viene utilizzato su un parametro.

SAL2 non richiede l'utilizzo di un ulteriore livello di _Deref_ quando si gestiscono i parametri di riferimento.Questa particolare voce è ambigua riguardo a quale livello di dereferenziazione deve essere annotato.Può essere necessario utilizzare _At_ per fare riferimento all'oggetto specifico da annotare.

Esempio

Il codice seguente genera questo avviso in quanto l'utilizzo di __deref_out_ecount(n) è ambiguo:

   void ref(__deref_out_ecount(n) int **&buff, int &n)

L'annotazione sopra potrebbe essere interpretata come:

  • un riferimento a un array di (n) puntatori a Integer (interpretazione SAL1)

  • un riferimento a un puntatore a un array di (n) numeri interi (interpretazione SAL2)

Una delle seguenti risolve il problema:

   void ref(_Out_writes_(n) int **&buff, int &n)
   // or
   _At_(*buff), _Out_writes(n)) void ref(int **&amp;buff, int &amp;n)