トッツィーロール

忘れたころに記事を書く備忘録

VisualStudioのC++で文字列の暗黙キャストを有効にする(C2664,E0167)

VisualStudio2017以降でC++使用時に以下のような文字列リテラルをポインタに代入するようなコードを書く場合、デフォルトの設定ではエラーが発生します。

char *p = "test";

C++11以降ではこのような暗黙キャストが発生する書き方は標準となっていないためエラーとなるようです。
明示的にキャストするのが良いですが、古い大規模なソースコードを扱う場合、大量のエラーが発生し修正は困難です。
VisualStudioのプロジェクトのプロパティからC/C++→Language→Conformance mode(準拠モード)の設定をYes(/premissive)からNo(/premissive)に切り替えることで無効化できます。

参考文献
stackoverflow.com