VisualStudio2017以降のC++でE0144のエラーが出たときの対策

古いソースコードをVisual Studioに組み込むとE0144の大量のエラーが出る事があります。



char *p[]={"Test","Test"};

こういうコードですね。

“const char *” を “char *” に入れると書き換えられるよね、ダメだよって言ってます。

本来はここはconst char *になるべき所なのですが、4Byte領域のアロケートを面倒だからとこう書いている場合があります。

その場合は別の値をコピーする所でエラーが出たりしますよね。

「おい、もう既に出来上がってて動いてた実績のあるコードなのに、なんで変えてるんだ!」

それでバグが出ると、
『変えなくてもいい所を時間をかけて勝手に変更してバグを作り、問題を起こしたトンデモ野郎!』
等というレッテルを張られる事になったりします。(恐ろしいですね)

そういう時は、非推奨のC++構文は認めないモードがONになっているかを確認します。

これがNoになっていると、const char*をchar *にキャスト無しで設定したりしてもエラーにはなりません。一度確認してみてください。