C6273
Warnung 6273: Eine Nichtganzzahl wurde als <Nummer>-Parameter übergeben. Im Aufruf von <Funktion> ist jedoch eine ganze Zahl erforderlich. Wenn ein Zeigerwert übergeben wird, sollte %p verwendet werden.
Diese Warnung gibt an, dass in der Formatzeichenfolge eine ganze Zahl, z. B. %d oder eine Längen- oder Rangfolgenspezifikation für printf, angegeben ist, jedoch eine Nichtganzzahl wie float, string oder struct als Parameter übergeben wird.Dieser Fehler führt wahrscheinlich zu einer falschen Ausgabe.
Beispiel
Im folgenden Code wird diese Warnung generiert, da für die sprintf-Funktion eine ganze Zahl und nicht floaterforderlich ist:
#include <stdio.h>
#include <string.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
Im folgenden Code wird eine Ganzzahlumwandlung verwendet, um diese Warnung zu korrigieren:
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
Im folgenden Code wird die Funktion zur sicheren Zeichenfolgenbearbeitung, sprintf_s, verwendet, um diese Warnung zu korrigieren:
#include <stdio.h>
#include <string.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
Diese Warnung tritt unter Windows 9x und Windows NT, Version 4, nicht auf, da %p auf diesen Plattformen nicht unterstützt wird.