Avviso C28302
Per il parametro di riferimento C++ 'parameter_name', è stato trovato un operatore aggiuntivo
_Deref_
in 'annotazione'.
Questo avviso viene segnalato quando viene usato un livello aggiuntivo di _Deref_
su un parametro di un tipo riferimento, T &a
ad esempio . Un errore comune quando si usano le annotazioni SAL1 consiste nell'usare __deref
su un tipo di riferimento. I tipi di riferimento vengono riconosciuti da SAL, quindi tutte le annotazioni sono già applicate al tipo sottostante. In genere non si tratta di un problema in SAL2 perché l'annotazione a virgola mobile __deref
libera è stata rimossa. Se si intende applicare un'annotazione a un sottotipo, è consigliabile usare invece le annotazioni SAL2 _AT_
o _Outref_
.
Esempio
// Oops, trying to apply __elem_writableTo to the pointer being referenced
void f( __deref __elem_writableTo(size) int *& buffer, int size);
void func()
{
int buffer[100] = {};
int *pbuffer = buffer;
f(pbuffer, 100);
}
Per risolvere il problema, eseguire l'aggiornamento alle annotazioni SAL2:
// Fix warning by switching to SAL2 syntax which has annotations that better describe what the function does.
void f( _Outref_result_buffer_(size) int *& buffer);
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per