C6273
警告 C6273 - 整数でない値がパラメーター <数値> として渡されました。<関数> への呼び出しには整数が必要です: ポインター値が渡されようとしている場合は、%p を使用してください
この警告は、書式文字列で (%d、printf の長さや優先度の指定など) 整数が指定されていても、float、string、struct などの整数以外の文字がパラメーターとして渡されていることを示します。 この欠陥により、誤った出力が生成される可能性があります。
例
次のコードでは、sprintf 関数で float ではなく文字列が必要なため、この警告が発生します。
#include <stdio.h>
#include <string.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
次のコードでは、この警告を解決するために、整数のキャストを使用ます。
#include <stdio.h>
#include <string.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
次のコードでは、この警告を解決するために、安全な文字列操作関数 sprintf_s を使用します。
#include <stdio.h>
#include <string.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
これらのプラットフォームでは %p がサポートされていないため、この警告は Windows 9x および Windows NT version 4 には適用されません。