[MSVC]C++ の言語バージョンを C++20 以上にすると大量のコンパイルエラーが出る件

割引あり

C2440, C2664 などのコンパイルエラーが出ることがある

MSVC で C++ のコードをコンパイルしていたのに、言語バージョンを C++20 以上にした途端、C2440 や C2664 のエラーが大量発生。こんな経験、ありませんか?

実際、FFFTP のリファクタリング中にこんなエラーに遭遇しました。

SetTaskMsg("----------------------------");
// エラー C2664: 'void SetTaskMsg(char *,...)': 引数 1'const char [29]' から 'char *' へ変換できません。
char* Str;

switch (Error)
{
case WSAVERNOTSUPPORTED:
    Str = "version of WinSock not supported";
// エラー C2440: '=': 'const char [33]' から 'char *' に変換できません。

なぜこんなエラーが出るのか? どう解決すればいいのか?



C++ の言語バージョンを C++20 以上にする方法

プロジェクトのプロパティから、以下の設定を変更します。

  • 日本語: 構成プロパティ > C/C++ > 言語 > C++ 言語標準 を ISO C++20 標準 (/std:c++20) 以上にする。

  • English: Property Pages > Configuration Properties > C/C++ > Language > C++ Language Standard を ISO C++20 Standard (/std:c++20) 以上にする。


なぜエラーが出るのか?

ここから先は

1,635字

この記事が参加している募集

この記事が気に入ったらチップで応援してみませんか?