/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 中一致性問題的詳細資訊,請參閱 非標準行為 。
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: