Поделиться через


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