/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[-] autoに新しい標準 C++ の意味を適用します。 既定で有効。
/Zc:char8_t[-] const char8_tとして C++20 ネイティブ u8 リテラルのサポートを有効または無効にします。 /std:c++20以降を指定しない限り、既定ではオフです。
/Zc:checkGwOdr[-] /Gwで標準 C++ ODR 違反を強制します。
/Zc:enumTypes[-] enum型推論の標準 C++ 規則を有効にします。 既定ではオフです。
/Zc:externC[-] extern "C"関数に標準 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[-] 省略可能なコピーと移動のエリシオンを有効にします。 /O2/permissive-、または/std:c++20以降が指定されていない限り、既定ではオフです。
/Zc:preprocessor[-] 新しい準拠プリプロセッサを使用します。 /std:c11以降を指定しない限り、既定ではオフです。
/Zc:referenceBinding[-] UDT 一時は、非複合左辺値参照にバインドされません。 /permissive-が指定されていない限り、既定ではオフです。
/Zc:rvalueCast[-] 標準 C++ の明示的な型変換規則を適用します。 /permissive-が指定されていない限り、既定ではオフです。
/Zc:sizedDealloc[-] C++14 グローバル サイズの割り当て解除関数を有効にします。 既定で有効。
/Zc:strictStrings[-] 文字列リテラルを無効にして、変換を char* または wchar_t* します。 /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 コンパイラのコマンド ライン構文