Atsushi4のブログ

へたれQtプログラマの備忘録的ななにか

QStringとchar*との変換に警告を出す

概要

QStringLiteralやQString::fromUtf8などを使うべきところで使っていない箇所にコンパイル時warningまたはerrorを出す。

Qt勉強会#38@Tokyoでそんなお話をしていたので調べてみました。

結論

.proファイル等でdefineを追加します。


warningが出るようになる 2016/09/16追記:VCコンパイラでは出ないようです。

DEFINES += QT_ASCII_CAST_WARNINGS


errorになる(どちらか1行)

DEFINES += QT_NO_CAST_FROM_ASCII
DEFINES += QT_RESTRICTED_CAST_FROM_ASCII

QT_RESTRICTED_CAST_FROM_ASCII ではchar定数配列を引数にとるimplicitなコンストラクタおよび代入演算子は提供される。ポインタはダメ。


Qt自身のビルド時は load(qt_module) で
QT_NO_CAST_TO_ASCII と QT_ASCII_CAST_WARNINGS がdefineされる模様。


プロダクトコードには
DEFINES += QT_NO_CAST_TO_ASCII
推奨、というカンジでしょうか。


(Qt5.7.0, minGW5.3とVS2015で確認しています)