/Zc (一致性)

使用編譯器 /Zc 選項來指定標準或 Microsoft 特定的編譯器行為。

語法

/Zc:option {, option ...}

您可以在單 /Zc 一編譯器選項中設定以逗號分隔的多個 /Zc 選項。 如果在同一 /Zc 個命令中啟用和停用選項,則會使用最後出現的選項。

備註

當 Visual Studio 已實作與標準不相容的 C 或 C++ 延伸模組時,您可以使用一致性 /Zc 選項來指定符合標準的行為或 Microsoft 特定的行為。 對於某些選項,Microsoft 特定的行為是預設值,以防止對現有程式碼進行大規模的重大變更。 在其他情況下,預設值是標準行為,其中安全性、效能或相容性的改善超過重大變更的成本。 每個一致性選項的預設設定可能會在較新版本的 Visual Studio 中變更。 如需每個一致性選項的詳細資訊,請參閱特定選項的文章。 編譯 /permissive- 程式選項會隱含地設定預設未設定其一致性設定的一致性選項。

以下是編譯器 /Zc 選項:

選項 行為
/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[-] 強制執行函式的標準 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[-] 針對泛型 Lambda 中的一致性模式語法檢查啟用新的 Lambda 處理器。 除非指定或更新版本,否則 /std:c++20 預設為關閉。
/Zc:noexceptTypes[-] 強制執行 C++17 noexcept 規則。 除非指定或更新版本,否則 /std:c++17 預設為關閉。
/Zc:nrvo[-] 啟用選擇性複製並移動 elisions。 除非 /O2 指定 、 /permissive-/std:c++20 或更新版本,否則預設為關閉。
/Zc:preprocessor[-] 使用符合新規範的預處理器。 除非指定或更新版本,否則 /std:c11 預設為關閉。
/Zc:referenceBinding[-] UDT 暫存不會系結至非const 左值參考。 除非指定 ,否則 /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 編譯器命令列語法