【问题标题】:qFatal argument: conversion of QString to const char* results in warning "format string is not a string literal"qFatal 参数:将 QString 转换为 const char* 会导致警告“格式字符串不是字符串文字”
【发布时间】:2018-03-18 22:19:41
【问题描述】:

Qt5.9和clang++-6.0.0下,

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

产生警告“格式字符串不是字符串文字”。

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

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

【问题讨论】:

  • 已编辑问题以说明它与 #5505221 有何不同(将 QString 转换为 char*)
  • 我建议你修改标题以表明问题的核心是qFatal的用法,这将是一个更有用的参考。
  • 好点,完成

标签: c++ qt c-strings llvm-clang string-conversion


【解决方案1】:

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

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

警告消失了。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2010-12-13
    • 2011-05-24
    相关资源
    最近更新 更多