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で確認しています)