Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La posizione dell'argomento elenco formato specificata dall'annotazione non è corretta.
Osservazioni:
Questo avviso indica che un'annotazione _*_format_strings_param(position) SAL specifica una posizione non valida per il primo parametro per la stringa di formato. L'annotazione consente al controllo di verificare printf le stringhe di formattazione dello stile passate alla funzione. Altri controlli di validità della stringa di formato che si basano su questa annotazione non verranno eseguiti in seguito a questo avviso.
L'annotazione _*_format_strings_param(position) SAL è associata all'argomento stringa di formattazione. position deve essere in una delle seguenti forme:
- Identificatore, che viene preso come primo argomento per la stringa di formato. Quando l'identificatore non è il nome di un parametro per la funzione, viene generato un avviso.
- Offset integer positivo rispetto al parametro format-string in cui
1è il parametro successivo. Quando l'offset non è compreso nei limiti per i parametri, viene generato un avviso. 0Valore , interpretato come...parametro . Quando la funzione non è variadic, viene generato un avviso.
Una limitazione di questo controllo è che viene eseguita nel sito di chiamata di funzione e non nella dichiarazione. Questa limitazione è un effetto collaterale della valutazione differita delle annotazioni SAL.
Esempi
In questo esempio è disponibile una funzione specializzata per la registrazione delle coordinate. L'annotazione params specifica il ... parametro , che non esiste.
void LogCoordinate(_Printf_format_string_params_(0) _In_ char *format, int x, int y);
void func(int x, int y)
{
LogCoordinate("(%d, %d)", x, y);
}
Questo problema è stato risolto modificando la posizione annotata su x o 1. Per determinare il valore corretto per il codice, controllare il comportamento della funzione chiamata.
void LogCoordinate(_Printf_format_string_params_(1) _In_ char *format, int x, int y);
void func(int x, int y)
{
LogCoordinate("(%d, %d)", x, y);
}
Vedi anche
Annotazione dei parametri della funzione e valori restituiti