共用方式為


依分類排列的編譯器選項

本文包含編譯器選項的分類清單。 如需依字母順序排列的清單,請參閱依字母順序排列的編譯器選項

最佳化

選項

用途

/O1

建立小型程式碼。

/O2

建立快速程式碼。

/Ob

控制內嵌展開。

/Od

停用最佳化。

/Og

使用全域最佳化。

/Oi

產生內建函式。

/Os

偏好小的程式碼。

/Ot

偏好快的程式碼。

/Ox

使用最大最佳化 (/Ob2gity /Gs)。

/Oy

省略框架指標。 (僅限 x86)

/favor

產生針對指定之結構或結構範圍進行最佳化的程式碼。

程式碼產生

選項

用途

/arch

在程式碼產生時使用 SSE 或 SSE2 指令。 (僅限 x86)

/clr

產生輸出檔案,以便在 Common Language Runtime 上執行。

/EH

指定例外狀況處理模型。

/fp

指定浮點行為。

/GA

對 Windows 應用程式進行最佳化。

/Gd

使用 __cdecl 呼叫慣例。 (僅限 x86)

/Ge

啟動堆疊探查。

/GF

啟用字串共用。

/Gh

呼叫攔截函式 _penter

/GH

呼叫攔截函式 _pexit

/GL

啟用整個程式最佳化。

/Gm

啟用最少重建。

/GR

啟用執行階段類型資訊 (RTTI)。

/Gr

使用 __fastcall 呼叫慣例。 (僅限 x86)

/GS

檢查緩衝區安全性。

/Gs

控制堆疊探查。

/GT

對使用靜態執行緒區域儲存區所配置的資料支援 Fiber 安全性。

/Gv

使用 __vectorcall 呼叫慣例。 (僅限 x86 和 x64)

/Gw

啟用整個程式全域資料最佳化。

/GX

啟用同步例外狀況處理。

/Gy

啟用函式階層連結。

/GZ

啟用快速檢查。 (與 /RTC1 相同)

/Gz

使用 __stdcall 呼叫慣例。 (僅限 x86)

/homeparams

在函式進入時,強制暫存器中所傳遞的參數寫入至堆疊上的位置。 這個編譯器選項只適用於 x64 編譯器 (原生和跨平台編譯)。

/hotpatch

建立可線上修補的影像。

/Qfast_transcendentals

產生快速超越函式。

QIfist

在必須從浮點類型轉換為整數類型時,抑制對 Helper 函式 _ftol 的呼叫。 (僅限 x86)

/Qimprecise_fwaits

移除 try 區塊內的 fwait 命令。

/Qpar

啟用迴圈自動平行處理。

/Qpar-report

啟用自動平行處理的報告層級。

/Qsafe_fp_loads

使用浮點值的整數移動指令,並停用特定浮點數負載最佳化。

/Qvec-report (自動向量化工具報告層級)

啟用自動向量化的報告層級。

/RTC

啟用執行階段錯誤檢查。

/volatile

選取 volatile 關鍵字的解譯方式。

輸出檔

選項

用途

/doc

將文件註解處理成 XML 檔案。

/FA

設定組件清單檔。

/Fa

建立組件清單檔。

/Fd

重新命名程式資料庫檔案。

/Fe

重新命名可執行檔。

/Fi

指定前置處理過的輸出檔名稱。

/Fm

建立對應檔 (Mapfile)。

/Fo

建立目的檔。

/Fp

指定先行編譯標頭檔的名稱。

/FR /Fr

產生瀏覽器檔案。

前置處理器

選項

用途

/AI

指定一個要搜尋的目錄,以解析傳遞給 #using 指示詞的檔案參考。

/C

在前置處理過程中保留註解。

/D

定義常數和巨集。

/E

複製前置處理器輸出至標準輸出。

/EP

複製前置處理器輸出至標準輸出。

/FI

前置處理指定的包含檔。

/FU

強制使用某個檔案名稱,就如同其已傳遞給 #using 指示詞一般。

/Fx

將插入的程式碼與原始程式檔合併。

/I

搜尋包含檔的目錄。

/P

將前置處理器輸出寫入檔案。

/U

移除某個預先定義巨集。

/u

移除所有預先定義巨集。

/X

忽略標準 Include 目錄。

語言

選項

用途

/openmp

在原始程式碼中啟用 #pragma omp

/vd

抑制或啟用隱藏的 vtordisp 類別成員。

/vmb

對指向成員的指標使用最佳基底。

/vmg

對指向成員的指標使用完整一般性。

/vmm

宣告多重繼承。

/vms

宣告單一繼承。

/vmv

宣告虛擬繼承。

/Z7

產生 C 7.0 相容的偵錯資訊。

/Za

停用語言擴充功能。

/Zc

指定 /Ze 下的標準行為。

/Ze

啟用語言擴充功能。

/Zg

產生函式原型。

/ZI

將偵錯資訊包括在與「編輯後繼續」相容的程式資料庫中。 (僅限 x86)

/Zi

產生完整偵錯資訊。

/Zl

從 .obj 檔案移除預設程式庫名稱。

/Zo

在非偵錯組建中產生適用於最佳化程式碼的增強型偵錯資訊。

/Zpn

封裝結構成員。

/Zs

僅檢查語法。

/ZW

產生要在 Windows 執行階段上執行的輸出檔案。

連結

選項

用途

/F

設定堆疊大小。

/LD

建立動態連結程式庫。

/LDd

建立偵錯動態連結程式庫。

/link

傳遞指定的選項給 LINK。

/LN

建立 MSIL 模組。

/MD

使用 MSVCRT.lib 編譯以建立多執行緒 DLL。

/MDd

使用 MSVCRTD.lib 編譯以建立偵錯多執行緒 DLL。

/MT

使用 LIBCMT.lib 編譯以建立多執行緒可執行檔。

/MTd

使用 LIBCMTD.lib 編譯以建立偵錯多執行緒可執行檔。

先行編譯標頭

選項

用途

/Y-

忽略目前組建中所有其他先行編譯標頭編譯器選項。

/Yc

建立先行編譯標頭檔。

/Yd

將完整的偵錯資訊置於所有目的檔中。

/Yu

在建置時使用先行編譯標頭檔。

其他

選項

用途

/?

列出編譯器選項。

@

指定回應檔。

/analyze

啟用程式碼分析。

/bigobj

增加 .obj 檔案中可定址區段的數目。

/c

編譯而不連結。

/cgthreads

指定 cl.exe 執行緒的數目,以用於最佳化及程式碼產生。

/errorReport

可讓您直接提供內部編譯器錯誤 (ICE) 資訊給 Visual C++ 團隊。

/FC

在診斷文字中顯示傳遞給 cl.exe 的原始程式檔完整路徑。

/FS

強制寫入要透過 MSPDBSRV.EXE 序列化的程式資料庫 (PDB) 檔案。

/H

限制外部 (公用) 名稱的長度。

/HELP

列出編譯器選項。

/J

變更預設 char 類型。

/kernel

編譯器和連結器將會建立可以在 Windows 核心中執行的二進位檔。

/MP

同時建置多重原始程式檔。

/nologo

隱藏登入程式的啟始資訊。

/sdl

啟用其他安全性功能及警告。

/showIncludes

在編譯時顯示所有 Include 檔的清單。

/Tc /TC

指定 C 原始程式檔。

/Tp /TP

指定 C++ 原始程式檔。

/V

設定版本字串。

/Wall

啟用所有警告,包括預設停用的警告。

/W

設定警告層級。

/w

停用所有警告。

/WL

從命令列編譯 C++ 原始程式碼時啟用一行錯誤和警告訊息診斷。

/Wp64

偵測 64 位元可移植性問題。

/Yd

將完整的偵錯資訊置於所有目的檔中。

/Yl

在建立偵錯程式庫時插入 PCH 參考。

/Zm

指定先行編譯標頭的記憶體配置上限。

請參閱

參考

編譯器選項

設定編譯器選項

其他資源

C/C++ 建置參考