Есть 2 различных ошибки с линией коды вы публикуемой:
- Строка формата содержит недопустимый спецификатор формата (трейлинг
%
). Если вы хотите, чтобы строка формата содержала буквенный знак процента, ее нужно экранировать с помощью %%
.
- Вы используете строковый литерал, который не соответствует требуемой кодировке, то есть несоответствие между кодировкой символов ANSI и UNICODE. Если
m_Echo1
имеет тип CString
, параметр должен быть обернут внутри макроса _T
или TEXT
: _T("%d %%")
. Если m_Echo1
имеет тип CStringW
, параметр должен быть передан как строковый литерал UNICODE, добавив его L
: L"%d %%"
.
Примечание: Сообщение об ошибке, которое вы отправили, не соответствует строке кода. Сообщение об ошибке относится к const char [6]
, тогда как строковый литерал в вашем коде имеет тип const char [5]
. Убедитесь, что сообщения об ошибках и код совпадают.
Два комментария: почти всегда лучше использовать макросы T - так '_T ("% d %% ")'. И одиночный, автономный '%' не является допустимым спецификатором формата. Я считаю, что более новые версии библиотек Microsoft поднимают исключение безопасности во время выполнения, когда они сталкиваются с ним. –