共用方式為


/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[-] 強制執行函式的標準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[-] 針對泛型 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 編譯器命令列語法