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);
}