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());
警告消失了。
在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());
警告消失了。