C6302
Предупреждение C6302: несоответствие строки формата. Передан параметр <номер>, являющийся символьной строкой, тогда как в вызове <функции> требуется широкий символ.
Данное предупреждение означает, что строка формата указывает на необходимость строки двухбайтовых знаков. Однако передана строка однобайтовых знаков. Данная ошибка, скорее всего, приведет к сбою или к какому-либо повреждению.
Пример
В следующем примере кода создается данное предупреждение из-за передачи в функцию wprintf строки символов.
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf(L"%s", buff);
}
В следующем примере кода для указания строки однобайтовых знаков в функции wprintf используется %hs.
#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);
}