/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 中一致性問題的詳細資訊,請參閱 非標準行為。