C6302
警告 C6302:格式字符串不匹配: 传递了字符字符串参数 <number>,而对 <function> 的调用需要宽字符字符串参数
此警告意味着格式字符串指定需要宽字符字符串。 但是,传递的是字符字符串。 此缺陷有可能会导致某种形式的系统崩溃或损坏。
示例
在下面的代码示例中,因为向 wprintf 函数传递了字符字符串,所以会生成此警告:
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf(L"%s", buff);
}
下面的代码示例使用 %hs,借助于 wprintf 函数指定单字节字符字符串:
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf(L"%hs", buff);
}
下面的代码示例使用安全的字符串操作函数 wprintf_s 来更正此警告:
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf_s(L"%hs", buff);
}