qFatal 参数:QString 到 const char* 的转换导致警告 "format string is not a string literal"

qFatal argument: conversion of QString to const char* results in warning "format string is not a string literal"

在Qt5.9和clang++-6.0.0下,

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

产生警告 "format string is not a string literal"。

出了什么问题,完成所需的从 QString 到 C 字符串的转换的正确方法是什么?

PS:一个密切相关的问题是Converting QString to char*。然而,在这里,由于 qFatal 的类似 printf 的参数列表,不同的解决方案是可能的。

qFatal 允许 printf 已知的可变参数 ...。于是

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

警告消失了。