/Zc (準拠)

コンパイラ オプションを /Zc 使用して、標準または Microsoft 固有のコンパイラ動作を指定します。

構文

/Zc:option{,option ...}

コンマで区切ることにより、1 つの /Zc コンパイラ オプションで複数の /Zc オプションを設定できます。 同じコマンドで /Zc オプションが有効または無効になっている場合は、最後に表示されるオプションが使用されます。

解説

Visual Studio で、標準と互換性のない C または C++ の拡張機能を実装している場合は、/Zc 準拠オプションを使用して、標準準拠または Microsoft 固有の動作を指定できます。 一部のオプションでは、既存のコードに対する大規模な破壊的変更を防ぐために、Microsoft 固有の動作を既定で使用します。 それ以外の場合、セキュリティ、パフォーマンス、または互換性における向上が、破壊的変更にかかるコストを上回ると思われるため、標準動作を既定で使用します。 各準拠オプションの既定の設定は、新しいバージョンの Visual Studio で変更できます。 各準拠オプションの詳細については、個別のオプションに関する記事を参照してください。 /permissive- コンパイラ オプションは、既定では設定されていない準拠オプションを、準拠する設定に暗黙的に設定します。

/Zc コンパイラ オプションを次に示します。

オプション Behavior
/Zc:__cplusplus[-] マクロを __cplusplus 有効にして、サポートされている標準を報告します。 既定ではオフです。
/Zc:__STDC__ マクロで __STDC__ C 標準がサポートされていることを報告できるようにします。 既定ではオフです。
/Zc:alignedNew[-] C++17 のオーバーアラインされた動的割り当てを有効にします。 それ以降が指定されていない限り /std:c++17 、既定ではオフです。
/Zc:auto[-] 新しい標準 C++ の意味を適用します auto。 既定でオンになっています。
/Zc:char8_t[-] C++20 ネイティブ u8 リテラルのサポート const char8_tを有効または無効にします。 それ以降が指定されていない限り /std:c++20 、既定ではオフです。
/Zc:checkGwOdr[-] の下 /Gwに標準 C++ ODR 違反を強制します。
/Zc:enumTypes[-] 型推論の標準 C++ 規則を enum 有効にします。 既定ではオフです。
/Zc:externC[-] 関数に標準 C++ 規則を適用します extern "C" 。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:externConstexpr[-] 変数の外部リンケージを constexpr 有効にします。 既定ではオフです。
/Zc:forScope[-] 標準 C++ for のスコープ規則を適用します。 既定でオンになっています。
/Zc:gotoScope[-] ローカル変数の初期化に関する標準 C++ goto 規則を適用します。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:hiddenFriend[-] 標準の C++ 非表示フレンド ルールを適用します。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:implicitNoexcept[-] 必要な関数で暗黙的 noexcept を有効にします。 既定でオンになっています。
/Zc:inline[-] 参照されていない関数またはデータが COMDAT であるか、内部リンケージのみがある場合は削除します。 既定ではオフです。
/Zc:lambda[-] 汎用ラムダでの準拠モードの構文チェック用に新しいラムダ プロセッサを有効にします。 それ以降が指定されていない限り /std:c++20 、既定ではオフです。
/Zc:noexceptTypes[-] C++17 規則を noexcept 適用します。 それ以降が指定されていない限り /std:c++17 、既定ではオフです。
/Zc:nrvo[-] 省略可能なコピーと移動のエリシオンを有効にします。 、またはそれ/std:c++20以降を指定しない限り/O2/permissive-、既定ではオフです。
/Zc:preprocessor[-] 新しい準拠プリプロセッサを使用します。 それ以降が指定されていない限り /std:c11 、既定ではオフです。
/Zc:referenceBinding[-] UDT 一時は、非複合左辺値参照にバインドされません。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:rvalueCast[-] 標準 C++ の明示的な型変換規則を適用します。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:sizedDealloc[-] C++14 グローバル サイズの割り当て解除関数を有効にします。 既定でオンになっています。
/Zc:strictStrings[-] 文字列リテラルの変換またはwchar_t*変換をchar*無効にします。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:static_assert[-] の厳密な取り扱い static_assert。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:templateScope[-] 標準の C++ テンプレート パラメーターシャドウルールを適用します。 既定ではオフです。
/Zc:ternary[-] オペランド型に条件付き演算子ルールを適用します。 指定されていない限り /permissive- 、既定ではオフです。
/Zc:threadSafeInit[-] スレッド セーフなローカル静的初期化を有効にします。 既定でオンになっています。
/Zc:throwingNew[-] 失敗した場合のスローを想定 operator new します。 既定ではオフです。
/Zc:tlsGuards[-] TLS 変数の初期化のためのランタイム チェックを生成します。 既定でオンになっています。
/Zc:trigraphs[-] トライグラフを有効にします (廃止、既定ではオフ)。
/Zc:twoPhase- 不適合テンプレートの解析動作を使用します (指定されている場合 /permissive- にのみ適用され、既定では準拠します)。
/Zc:wchar_t[-] wchar_t はネイティブ型であり、typedef ではありません。 既定でオンになっています。
/Zc:zeroSizeArrayNew[-] オブジェクトの 0 サイズ配列のメンバー new/delete を呼び出します。 既定でオンになっています。

MSVC の準拠に関する問題について詳しくは、「非標準動作」をご覧ください。

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文