Condividi tramite


Avviso C28303

Per il parametro <di riferimento C++ parameter_name>, è stato trovato un operatore ambiguo _Deref_ in 'annotazione'.

Questo avviso è simile all'avviso C28302 e viene segnalato quando viene usato un livello aggiuntivo di _Deref_ su un parametro.

SAL2 non richiede l'uso di un livello aggiuntivo di _Deref_ quando si gestiscono parametri di riferimento. Questa particolare annotazione è ambigua per quanto riguarda il livello di dereferenziazione che deve essere annotato. Potrebbe essere necessario utilizzare _At_ per fare riferimento all'oggetto specifico da annotare.

Esempio

Il codice seguente genera questo avviso perché l'uso di __deref_out_ecount(n) è ambiguo:

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

L'annotazione precedente può essere interpretata come:

  • riferimento a una matrice (di n) puntatori a numeri interi (interpretazione SAL1)

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

    Una delle modifiche seguenti può correggere questo avviso:

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