Visual Studio下_cplusplusマクロ199711 Lの問題

1716 ワード

Visual Studio下_cplusplusマクロ199711 Lの問題
/Zc:__ cplusplus(更新可能__cplusplusマクロ)
この/ZC:_CPLUSPLUSコンパイラオプションcplusplusプリプロセッシングマクロは、最近のC++言語標準のサポートレポートの更新値です.デフォルトでは、Visual Studioは常に_cplusplusプリプロセッサマクロは「199711 L」の値を返します.
構文
/Zc:__ cplusplus [ - ]
コメント
説明_cplusplusプリプロセッシングマクロは、通常、C++標準の特定のバージョンのサポートを報告するために使用されます.多くの既存のコードは、このマクロが「199711 L」に一致する値に依存しているように見えるため、コンパイラは/Zc:_を使用しない限り、マクロの値を変更しません.cplusplusコンパイラオプションは、追加を明確に選択します.この/ZC:_CPLUSPLUSオプションは、Visual Studioの2017年から15.7バージョンで使用でき、デフォルトではオフになっています.以前のバージョンのVisual Studioでは、デフォルトまたは/Zc:_が指定されている場合cplusplus-,Visual Studioは_cplusplusプリプロセッサマクロは「199711 L」の値を返します.この/permissive-オプションは有効ではありません/Zc:_cplusplus.
とき/ZC:_CPLUSPLUSがオプションを有効にすると、レポートされた値が_cplusplusマクロは/std版スイッチ設定に依存します.この表には、マクロの可能な値が表示されます.
/Zc:__ cplusplusスイッチ
/std:c++スイッチ
__cplusplus値
Zc:__ cplusplus
/std:c++14(デフォルト)
201402L
Zc:__ cplusplus
/std:C++ 17
201703L
Zc:__ cplusplus
/std:C++最新
201704L
Zc:__ cplusplus-(無効)
いかなる価値も
199711L
未表記
いかなる価値も
199711L
コンパイラは、C++98、C++03、またはC++11の標準スイッチをサポートしていません.
コンパイラツールセットの変更をより詳細に検出するには、_MSC_VER定義済みマクロ.この内蔵マクロの値は、Visual Studio 2017以降の各ツールセットの更新で増加します.いずれにしても/Zc:_cplusplusオプションが有効か無効か、MSVC_LANG事前定義マクロは標準バージョンを報告します.とき/Zc:_cplusplusが有効になっている場合.  __cplusplus == _MSVC_LANG
このコンパイラオプションをVisual Studioで設定する
  • プロジェクトの「プロパティ・ページ」ダイアログ・ボックスを開きます.詳細については、Visual StudioでC++コンパイラとコンストラクションアトリビュートを設定するを参照してください.
  • 「構成プロパティ」>「C/C+」>「コマンドライン」プロパティ・ページを選択します.
  • 将/Zc:_cplusplusまたは/Zc:_cplusplus-他のオプション:ペインに追加します.

  • 参照先:
    1./Zc:__ cplusplus(更新可能__cplusplusマクロ)
    2.VS 2017下_cplusplusマクロ199711 Lの問題