qFatal аргумент: преобразование QString в const char* приводит к тому, что строка формата предупреждения не является строковым литералом

В Qt5.9 и clang++-6.0.0,

QString ret;
qFatal(ret.toLatin1().constData());

выдает предупреждение "строка формата не является строковым литералом".

Что не так и как правильно выполнить требуемое преобразование из QString в строку C?

PS: Тесно связанный вопрос: преобразование QString в char*. Однако здесь возможны разные решения благодаря списку аргументов qFatal, похожему на printf.


person Joachim W    schedule 18.03.2018    source источник
comment
Возможный дубликат преобразования QString в char*   -  person Mohammad Kanan    schedule 19.03.2018
comment
Отредактирован вопрос, чтобы сказать, чем он отличается от # 5505221 (преобразование QString в char *)   -  person Joachim W    schedule 19.03.2018
comment
Я рекомендую вам изменить заголовок, чтобы указать, что суть проблемы заключается в qFatal использовании, это будет гораздо более полезным справочным материалом.   -  person Mohammad Kanan    schedule 19.03.2018
comment
хороший момент, сделано   -  person Joachim W    schedule 19.03.2018


Ответы (1)


qFatal допускает вариативный аргумент ..., известный из printf. Таким образом

qFatal("%s", ret.toLatin1().constData());

и предупреждение исчезло.

person Joachim W    schedule 18.03.2018