Advertencia C6066
El puntero no se pasa como parámetro (número) cuando se requiere el puntero en la llamada a "function".
Comentarios
Esta advertencia indica que la cadena de formato especifica que se requiere un puntero, pero no se pasa un puntero. Se requiere un puntero, por ejemplo, cuando se usa una %n
especificación o %p
para printf
, o %d
para scanf
. Es probable que este defecto provoque un bloqueo o algún tipo de daño.
Nombre del análisis de código: NON_POINTER_ARGUMENT_TO_FORMAT_FUNCTION
Ejemplo
El código siguiente genera esta advertencia:
#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 ...
}
Para corregir esta advertencia, el código siguiente pasa los parámetros correctos a las funciones sprintf
y 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 ...
}
El código siguiente usa funciones sprintf_s
de manipulación de cadenas seguras y scanf_s
para corregir esta advertencia:
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 ...
}
Normalmente, esta advertencia se notifica porque se ha usado un entero para un formato %p
en lugar de un puntero. El uso de un entero en esta instancia no es portátil a equipos de 64 bits.
Consulte también
Sintaxis de especificación de formato: funciones printf y wprintf
sprintf_s
, _sprintf_s_l
, swprintf_s
, _swprintf_s_l
scanf_s
, _scanf_s_l
, wscanf_s
, _wscanf_s_l
C4313
C4477
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de