依字母順序排列的編譯器選項
此數據表包含編譯程式選項的字母清單。 如需依類別排序的編譯程式選項清單,請參閱 依類別 列出的編譯程式選項一文。
編譯器選項
選項 | 目的 |
---|---|
@ |
指定回應檔。 |
/? |
列出編譯器選項。 |
/AI<dir> |
指定要搜尋的目錄,以解析傳遞至 指示詞的 #using 檔案參考。 |
/analyze |
啟用程式碼分析。 |
/arch |
最低 CPU 架構需求。 |
/arm64EC |
產生與arm64EC ABI相容的程式代碼。 |
/await |
啟用協同程式 (可繼續函式) 延伸模組。 |
/await:strict |
使用舊版語言啟用標準C++20協同程序支援。 |
/bigobj |
增加 .obj 檔案中可定址區段的數目。 |
/C |
在前置處理過程中保留註解。 |
/c |
編譯而不連結。 |
/cgthreads |
指定要用於優化和產生程式代碼的cl.exe線程數目。 |
/clr |
產生輸出檔案,以便在 Common Language Runtime 上執行。 |
/clr:implicitKeepAlive- |
關閉的 System::GC::KeepAlive(this) 隱含排放。 |
/clr:initialAppDomain |
啟用 Visual C++ 2002 的初始 AppDomain 行為。 |
/clr:netcore |
產生以 .NET Core 運行時間為目標的元件。 |
/clr:noAssembly |
不要產生元件。 |
/clr:nostdimport |
請勿以隱含方式匯入任何必要的元件。 |
/clr:nostdlib |
搜尋元件時,請忽略系統 .NET Framework 目錄。 |
/clr:pure |
產生僅限 IL 的輸出檔(沒有原生可執行程式碼)。 |
/clr:safe |
產生僅限 IL 的可驗證輸出檔案。 |
/constexpr:backtrace<N> |
在診斷中顯示 N constexpr 個評估 (預設值:10)。 |
/constexpr:depth<N> |
評估的 constexpr 遞歸深度限制(預設值:512)。 |
/constexpr:steps<N> |
在 N 個步驟之後終止 constexpr 評估 (預設值:100000) |
/D<name>{=|#}<text> |
定義常數和巨集。 |
/diagnostics |
診斷格式:列印數據行資訊。 |
/diagnostics:caret[-] |
診斷格式:列印數據行和指定的來源行。 |
/diagnostics:classic |
使用舊版診斷格式。 |
/doc |
將文件註解處理成 XML 檔案。 |
/E |
複製前置處理器輸出至標準輸出。 |
/EHa |
啟用C++例外狀況處理(具有 SEH 例外狀況)。 |
/EHc |
extern "C" 預設為 nothrow 。 |
/EHr |
一律產生 noexcept 運行時間終止檢查。 |
/EHs |
啟用C++例外狀況處理(沒有 SEH 例外狀況)。 |
/EP |
複製前置處理器輸出至標準輸出。 |
/errorReport |
已取代。 Windows 錯誤報告 (WER) 設定控制錯誤報告。 |
/execution-charset |
設定執行字元集。 |
/experimental:log |
啟用實驗式結構化 SARIF 輸出。 |
/experimental:module |
啟用實驗模組支援。 |
/exportHeader |
建立輸入自變數所指定的頭檔 (.ifc )。 |
/external:anglebrackets |
將所有透過 包含的 <> 標頭視為外部。 |
/external:env:<var> |
指定具有外部標頭位置的環境變數。 |
/external:I <path> |
指定外部標頭的位置。 |
/external:templates[-] |
評估跨範本具現化鏈結的警告層級。 |
/external:W<n> |
設定外部標頭的警告層級。 |
/F |
設定堆疊大小。 |
/FA |
設定組件清單檔。 |
/Fa |
建立組件清單檔。 |
/fastfail |
啟用快速失敗模式。 |
/favor:<blend|AMD64|INTEL64|ATOM> |
產生針對指定之結構或結構範圍進行最佳化的程式碼。 |
/FC |
顯示診斷文字中傳遞至 cl.exe 原始程式碼檔案的完整路徑。 |
/Fd |
重新命名程式資料庫檔案。 |
/Fe |
重新命名可執行檔。 |
/feature |
啟用架構功能。17.10 |
/FI<file> |
前置處理指定的包含檔。 |
/Fi |
指定前置處理過的輸出檔名稱。 |
/Fm |
建立對應檔 (Mapfile)。 |
/Fo |
建立目的檔。 |
/Fp |
指定先行編譯標頭檔的名稱。 |
/fp:contract |
在產生程式代碼時,請考慮浮點收縮。 |
/fp:except[-] |
在產生程式代碼時,請考慮浮點例外狀況。 |
/fp:fast |
“fast” 浮點模型;結果較不可預測的結果。 |
/fp:precise |
“precise” 浮點模型;結果是可預測的。 |
/fp:strict |
“strict” 浮點模型 (意指 /fp:except )。 |
/fpcvt:BC |
回溯相容的浮點至無符號整數轉換。 |
/fpcvt:IA |
Intel原生浮點數至無符號整數轉換行為。 |
/FR , /Fr |
命名產生的 .sbr 瀏覽器檔案。 /Fr 已被取代。 |
/FS |
強制寫入 PDB 檔案,以透過 MSPDBSRV.EXE串行化。 |
/fsanitize |
啟用清理工具檢測的編譯,例如 AddressSanitizer。 |
/fsanitize-coverage |
啟用連結庫的程式代碼涵蓋範圍檢測編譯,例如 LibFuzzer。 |
/Ft<dir> |
針對 #import 產生的頭檔位置。 |
/FU<file> |
強制使用檔名,就好像它已傳遞至 #using 指示詞一樣。 |
/Fx |
將插入的程式碼與原始程式檔合併。 |
/GA |
對 Windows 應用程式進行最佳化。 |
/Gd |
使用 __cdecl 呼叫慣例。 (僅限 x86) |
/Ge |
已取代。 啟動堆疊探查。 |
/GF |
啟用字串共用。 |
/GH |
呼叫攔截函式 _pexit 。 |
/Gh |
呼叫攔截函式 _penter 。 |
/GL[-] |
啟用整個程式最佳化。 |
/Gm[-] |
已取代。 啟用最少重建。 |
/GR[-] |
啟用執行階段類型資訊 (RTTI)。 |
/Gr |
使用 __fastcall 呼叫慣例。 (僅限 x86) |
/GS[-] |
檢查緩衝區安全性。 |
/Gs[n] |
控制堆疊探查。 |
/GT |
對使用靜態執行緒區域儲存區所配置的資料支援 Fiber 安全性。 |
/Gu[-] |
確定相異函式具有相異位址。 |
/guard:cf[-] |
加入控制流程防護安全性檢查。 |
/guard:ehcont[-] |
啟用 EH 接續元數據。 |
/Gv |
使用 __vectorcall 呼叫慣例。 (僅限 x86 和 x64) |
/Gw[-] |
啟用整個程式全域資料最佳化。 |
/GX[-] |
已取代。 啟用同步例外狀況處理。 請改用 /EH 。 |
/Gy[-] |
啟用函式階層連結。 |
/GZ |
已取代。 啟用快速檢查。 (與 /RTC1 相同) |
/Gz |
使用 __stdcall 呼叫慣例。 (僅限 x86) |
/H |
已取代。 限制外部 (公用) 名稱的長度。 |
/headerName |
從指定的標頭建置標頭單位。 |
/headerUnit |
指定在何處尋找指定標頭的頭單元檔案 (.ifc )。 |
/HELP |
列出編譯器選項。 |
/homeparams |
在函式進入時,強制暫存器中所傳遞的參數寫入至堆疊上的位置。 這個編譯程式選項僅適用於 x64 編譯程式(原生和交叉編譯)。 |
/hotpatch |
建立可線上修補的影像。 |
/I<dir> |
搜尋包含檔的目錄。 |
/ifcOutput |
指定已建置 .ifc 檔案的輸出檔名或目錄。 |
/interface |
將輸入檔視為模組介面單位。 |
/internalPartition |
將輸入檔視為內部數據分割單位。 |
/J |
變更預設 char 類型。 |
/jumptablerdata |
將 switch case 語句快捷方式數據表放在 .rdata 區段中。 |
/JMC |
支援原生C++ Just My Code 偵錯。 |
/kernel |
編譯程式和連結器會建立可在 Windows 核心中執行的二進位檔。 |
/LD |
建立動態連結程式庫。 |
/LDd |
建立偵錯動態連結程式庫。 |
/link |
傳遞指定的選項給 LINK。 |
/LN |
建立 MSIL .netmodule 。 |
/MD |
編譯以使用 MSVCRT.lib 建立多線程 DLL。 |
/MDd |
編譯以使用 MSVCRTD.lib 建立偵錯多線程 DLL。 |
/MP |
同時建置多重原始程式檔。 |
/MT |
編譯以使用 LIBCMT.lib 建立多線程可執行檔。 |
/MTd |
編譯以使用 LIBCMTD.lib 建立偵錯多線程可執行檔。 |
/nologo |
隱藏登入程式的啟始資訊。 |
/O1 |
建立小型程式碼。 |
/O2 |
建立快速程式碼。 |
/Ob<n> |
控制內嵌展開。 |
/Od |
停用最佳化。 |
/Og |
已取代。 使用全域最佳化。 |
/Oi[-] |
產生內建函式。 |
/openmp |
在原始碼開啟 #pragma omp 。 |
/openmp:experimental |
啟用 OpenMP 2.0 語言延伸模組,並選取 [OpenMP 3.0+ 語言延伸模組]。 |
/openmp:llvm |
使用 LLVM 執行時間的 OpenMP 語言延伸模組。 |
/options:strict |
無法辨識的編譯程式選項是錯誤。 |
/Os |
偏好小的程式碼。 |
/Ot |
偏好快的程式碼。 |
/Ox |
不包含 /GF 或 /Gy 的 /O2 子集。 |
/Oy |
省略框架指標。 (僅限 x86) |
/P |
將前置處理器輸出寫入檔案。 |
/PD |
列印所有巨集定義。 |
/permissive[-] |
設定標準一致性模式。 |
/PH |
在前置處理時產生 #pragma file_hash 。 |
/presetPadding |
零初始化堆疊型類別類型的填補。 |
/Qfast_transcendentals |
產生快速超越函式。 |
/QIfist |
已取代。 在必須從浮點類型轉換為整數類型時,抑制對 Helper 函式 _ftol 的呼叫。 (僅限 x86) |
/Qimprecise_fwaits |
移除 fwait 區塊內的 try 命令。 |
/QIntel-jcc-erratum |
降低 Intel JCC erratum 微碼更新的效能影響。 |
/Qpar-report:<n> |
啟用自動平行處理的報告層級。 |
/Qpar |
啟用迴圈自動平行處理。 |
/Qsafe_fp_loads |
使用浮點值的整數移動指令,並停用特定浮點數負載最佳化。 |
/Qspectre[-] |
針對 Spectre 攻擊類別啟用 CVE 2017-5753 的風險降低功能。 |
/Qspectre-load |
產生每個載入指令的串行化指令。 |
/Qspectre-load-cf |
針對載入記憶體的每個控制流程指令產生串行化指令。 |
/Qvec-report:<n> |
啟用自動向量化的報告層級。 |
/reference |
使用具名模組 IFC。 |
/RTC1 |
啟用快速運行時間檢查(相當於 /RTCsu )。 |
/RTCc |
在運行時間轉換成較小的類型檢查。 |
/RTCs |
啟用堆疊框架運行時間檢查。 |
/RTCu |
啟用未初始化的本機使用方式檢查。 |
/scanDependencies |
列出標準 JSON 窗體中的模組相依性C++。 |
/sdl |
啟用更多安全性功能和警告。 |
/showIncludes |
在編譯時顯示所有 Include 檔的清單。 |
/source-charset |
設定來源字元集。 |
/sourceDependencies |
列出所有來源層級相依性。 |
/sourceDependencies:directives |
列出模組和標頭單位相依性。 |
/std:c++14 |
C++14 標準 ISO/IEC 14882:2014 (預設值)。 |
/std:c++17 |
C++17 標準 ISO/IEC 14882:2017。 |
/std:c++20 |
C++20 標準 ISO/IEC 14882:2020。 |
/std:c++latest |
最新草稿C++標準預覽功能。 |
/std:c11 |
C11 標準 ISO/IEC 9899:2011。 |
/std:c17 |
C17 標準 ISO/IEC 9899:2018。 |
/std:clatest |
最新的 C 標準預覽功能草稿。 |
/TC |
指定所有來源檔案都是 C。 |
/Tc |
指定 C 原始程式檔。 |
/TP |
指定所有來源檔案都C++。 |
/Tp |
指定 C++ 原始程式檔。 |
/translateInclude |
將視為 #include import 。 |
/U<name> |
移除某個預先定義巨集。 |
/u |
移除所有預先定義巨集。 |
/utf-8 |
將來源和執行字元集設定為UTF-8。 |
/V |
已取代。 設定版本字串。 |
/validate-charset |
僅驗證 UTF-8 檔案是否只有相容的字元。 |
/vd{0|1|2} |
抑制或啟用隱藏的 vtordisp 類別成員。 |
/vlen |
指定向量長度。 |
/vmb |
對指向成員的指標使用最佳基底。 |
/vmg |
對指向成員的指標使用完整一般性。 |
/vmm |
宣告多重繼承。 |
/vms |
宣告單一繼承。 |
/vmv |
宣告虛擬繼承。 |
/volatile:iso |
取得/發行語意不保證在揮發性存取上。 |
/volatile:ms |
在揮發性存取上保證的取得/發行語意。 |
/volatileMetadata |
在揮發性記憶體存取上產生元數據。 |
/w |
停用所有警告。 |
/W0 、、 /W1 、 /W2 、 /W3 、 /W4 |
設定輸出警告層級。 |
/w1<n> 、 、 /w2<n> 、 /w3<n> /w4<n> |
設定指定警告的警告層級。 |
/Wall |
啟用所有警告,包括預設停用的警告。 |
/wd<n> |
停用指定的警告。 |
/we<n> |
將指定的警告視為錯誤。 |
/WL |
從命令行編譯C++原始程式碼時,啟用錯誤和警告訊息的單行診斷。 |
/wo<n> |
只顯示指定的警告一次。 |
/Wv:xx[.yy[.zzzzz]] |
停用在指定的編譯程式版本之後引進的警告。 |
/WX |
將警告視為錯誤。 |
/X |
忽略標準 Include 目錄。 |
/Y- |
忽略目前組建中所有其他先行編譯標頭編譯器選項。 |
/Yc |
建立 .PCH 檔案。 |
/Yd |
已取代。 將完整的偵錯資訊置於所有目的檔中。 請改用 /Zi 。 |
/Yl |
在建立偵錯程式庫時插入 PCH 參考。 |
/Yu |
在建置時使用先行編譯標頭檔。 |
/Z7 |
產生 C 7.0 相容的偵錯資訊。 |
/Za |
停用 C 程式代碼中的某些 C89 語言延伸模組。 |
/Zc:__cplusplus[-] |
__cplusplus 啟用巨集以報告支援的標準(預設為關閉)。 |
/Zc:__STDC__ |
__STDC__ 啟用巨集以報告支援 C 標準(預設為關閉)。 |
/Zc:alignedNew[-] |
啟用C++17 過度對齊的動態配置(預設為 C++17)。 |
/Zc:auto[-] |
針對 [預設] 強制執行新的標準C++意義 auto 。 |
/Zc:char8_t[-] |
啟用或停用 C++20 原生 u8 常值支援為 const char8_t (預設為關閉,但底下除外 /std:c++20 )。 |
/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 處理器。 |
/Zc:noexceptTypes[-] |
強制執行C++17 noexcept 規則(預設為 C++17 或更新版本)。 |
/Zc:nrvo[-] |
啟用選擇性複製並移動 elisions (預設在、 /permissive- 或 /std:c++20 更新版本下/O2 開啟)。 |
/Zc:preprocessor[-] |
使用新的符合預處理器 (預設為關閉,C11/C17 除外)。 |
/Zc:referenceBinding[-] |
UDT 暫存不會系結至非 const lvalue 參考(預設為 off)。 |
/Zc:rvalueCast[-] |
強制執行標準C++明確類型轉換規則(預設為關閉)。 |
/Zc:sizedDealloc[-] |
啟用C++14 個全域大小的解除分配函式(預設為 開啟)。 |
/Zc:strictStrings[-] |
停用字串常值或char* wchar_t* 轉換(預設為關閉)。 |
/Zc:templateScope[-] |
強制執行標準C++範本參數陰影規則(預設為關閉)。 |
/Zc:ternary[-] |
在操作數類型上強制執行條件運算符規則(預設為關閉)。 |
/Zc:threadSafeInit[-] |
啟用安全線程的本機靜態初始化(預設為 開啟)。 |
/Zc:throwingNew[-] |
假設 operator new 在失敗時擲回 (預設為關閉)。 |
/Zc:tlsGuards[-] |
產生 TLS 變數初始化的運行時間檢查(預設為 開啟)。 |
/Zc:trigraphs |
啟用三字 (過時,預設為關閉)。 |
/Zc:twoPhase[-] |
使用不符合規範的範本剖析行為(預設符合)。 |
/Zc:wchar_t[-] |
wchar_t 是原生類型,而不是 typedef (預設為 開啟)。 |
/Zc:zeroSizeArrayNew[-] |
針對物件的零大小陣列呼叫成員 new /delete (預設為 開啟)。 |
/Ze |
已取代。 啟用 C89 語言延伸模組。 |
/Zf |
以平行組建改善 PDB 產生時間。 |
/ZH:[MD5|SHA1|SHA_256] |
針對偵錯資訊中的總和檢查碼,指定 MD5、SHA-1 或 SHA-256。 |
/ZI |
將偵錯資訊包括在與「編輯後繼續」相容的程式資料庫中。 (僅限 x86) |
/Zi |
產生完整偵錯資訊。 |
/Zl |
從檔案中移除默認連結庫名稱 .obj 。 |
/Zm |
指定先行編譯標頭的記憶體配置上限。 |
/Zo[-] |
為優化程式代碼產生更豐富的偵錯資訊。 |
/Zp[n] |
封裝結構成員。 |
/Zs |
僅檢查語法。 |
/ZW |
產生輸出檔以在 Windows 執行階段 上執行。 |
17.10 從 Visual Studio 2022 17.10 版開始提供此選項。