Avviso C6066
Non puntatore passato come parametro(numero) quando il puntatore è necessario nella chiamata a 'function'.
Osservazioni:
Questo avviso indica che la stringa di formato specifica che è necessario un puntatore, ma viene passato un puntatore non. È necessario un puntatore, ad esempio quando si usa una %n
specifica o %p
per printf
o per %d
scanf
. Questo difetto potrebbe causare un arresto anomalo o un danneggiamento di qualche forma.
Nome dell'analisi del codice: NON_POINTER_ARGUMENT_TO_FORMAT_FUNCTION
Esempio
Il codice seguente genera questo avviso:
#include <stdio.h>
#define MAX 30
void f( )
{
char buff[MAX];
sprintf( buff, "%s %p %d", "Hello, World!", 1, MAX ); //warning C6066
// code ...
}
void g( int i )
{
int result = scanf( "%d", i ); // warning C6066
// code ...
}
Per correggere questo avviso, il codice seguente passa i parametri corretti alle sprintf
funzioni e scanf
:
#include <stdio.h>
#define MAX 30
void f( )
{
char buff[MAX];
sprintf( buff, "%s %p %d", "Hello, World!", buff, MAX ); // pass buff
// code ...
}
void g( int i )
{
int result = scanf( "%d", &i ); // pass the address of i
// code ...
}
Il codice seguente usa funzioni sprintf_s
di manipolazione delle stringhe sicure e scanf_s
per correggere questo avviso:
void f( )
{
char buff[MAX];
sprintf_s( buff, sizeof(buff), "%s %p %d", "Hello, World!", buff, MAX );
// code ...
}
void g( int i )
{
int result = scanf_s( "%d", &i );
// code ...
}
Questo avviso viene in genere segnalato perché è stato usato un numero intero per un %p
formato anziché un puntatore. L'uso di un numero intero in questa istanza non è portabile a computer a 64 bit.
Vedi anche
Sintassi della specifica del formato: funzioni printf e wprintf
sprintf_s
, _sprintf_s_l
, swprintf_s
_swprintf_s_l
scanf_s
, _scanf_s_l
, wscanf_s
_wscanf_s_l
C4313
C4477
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