Avviso C28220
Espressione integer prevista per l'annotazione 'annotation'
Questo avviso indica che è stata prevista un'espressione integer come parametro di annotazione, ma è stato usato un tipo incompatibile. Può essere causato dal tentativo di usare una macro di annotazione SAL che non rientra nello scenario corrente.
Esempio
#include <sal.h>
// Oops, the _In_reads_ annotation takes an integer type but is being passed a pointer
void f(_In_reads_(last) const int *buffer, const int *last)
{
for(; buffer < last; ++buffer)
{
//...
}
}
In questo esempio, lo scopo dello sviluppatore era indicare che buffer
sarebbe stato letto fino all'elemento last
. L'annotazione _In_reads_
non risolve lo scenario perché viene usato per indicare una dimensione del buffer in numero di elementi. L'annotazione corretta è _In_reads_to_ptr_
, che indica la fine del buffer con un puntatore.
Se non esiste un _to_ptr_
equivalente all'annotazione usata, l'avviso potrebbe essere stato risolto convertendo il last
puntatore in un valore di dimensione con (buffer - size)
nell'annotazione.
#include <sal.h>
void f(_In_reads_to_ptr_(last) const int *buffer, const int *last)
{
for(; buffer < last; ++buffer)
{
//...
}
}
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