q致命参数:将 QString 转换为常量字符* 会导致警告"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"

本文关键字:string format 警告 is literal not 字符 参数 QString 转换 常量      更新时间:2023-10-16

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

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

生成警告"格式字符串不是字符串文本"。

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

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

qFatal允许从printf中已知的可变参数...参数。因此

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

警告消失了。