/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 の準拠に関する問題について詳しくは、「非標準動作」をご覧ください。