2009年4月15日 星期三

[其他筆記]Visual C++ 編譯器選項


Visual C++ 編譯器選項






最佳化

選項

用途

/O1

建立小型程式碼。

/O2

建立快速程式碼。

/Ob

控制內嵌展開。

/Od

停用最佳化。

/Og

使用全域最佳化。

/Oi

產生內建函式。

/Os

偏好小的程式碼。

/Ot

偏好快的程式碼。

/Ox

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

/Oy

省略框架指標 (僅適用於 x86)。

程式碼產生

選項

用途

/arch

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

/bigobj

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

/clr

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

/EH

指定例外處理模型。

/favor

產生已為特定 x64 架構最佳化的程式碼,或為 AMD64 和 延伸記憶體 64 技術 (Extended Memory 64 Technology,EM64T) 架構中微架構特性最佳化的程式碼。

/fp

指定浮點行為。

/G1

為 Itanium 處理器執行最佳化。只有 IPF 跨平台編譯器或 IPF 原生編譯器才有提供。

/G2

為 Itanium2 處理器執行最佳化。只有 IPF 跨平台編譯器或 IPF 原生編譯器才有提供。

/Gd

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

/Ge

啟動堆疊探查。

/GF

啟用字串共用。

/Gh

呼叫攔截函式 _penter

/GH

呼叫攔截函式 _pexit

/GL

啟用整個程式最佳化。

/Gm

啟用最少重建。

/GR

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

/Gr

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

/Gs

控制堆疊探查。

/GT

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

/GX

啟用同步例外處理。

/Gy

啟用函式階層連結。

/Gz

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

/MD

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

/MDd

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

/MT

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

/MTd

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

/Qfast_transcendentals

產生快速超越函式。

/Qimprecise_fwaits

移除 try 區塊內的 fwait 命令。

輸出檔

選項

用途

/FA

建立清單檔 設定清單檔名稱。

/Fa

建立清單檔 設定清單檔名稱。

/Fd

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

/Fe

重新命名可執行檔。

/Fm

建立對應檔 (Mapfile)。

/Fo

建立目的檔。

/Fp

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

/FR/Fr

產生瀏覽器檔案。

/Fx

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

偵錯

選項

用途

/GS

緩衝區安全性檢查。

/GZ

/RTC1 相同。

/homeparams

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

/RTC

啟用執行階段錯誤檢查。

/Wp64

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

/Yd

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

/Yl

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

/Z7

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

/Zi

產生完整偵錯資訊。

/ZI

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

/Zx

產生可偵錯最佳化程式碼。只有 IPF 跨平台編譯器或 IPF 原生編譯器才有提供。

前置處理器 (Preprocessor)

選項

用途

/AI

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

/C

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

/D

定義常數和巨集。

/E

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

/EP

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

/Fl

前置處理指定的包含檔。

/FU

強制使用某一檔名,就如同它已傳遞給 #using 指示詞一樣。

/I

搜尋包含檔的目錄。

/P

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

/U

移除某個預先定義巨集。

/u

移除所有預先定義巨集。

/X

忽略標準 Include 目錄。

語言

選項

用途

/openmp

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

/vd

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

/vmb

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

/vmg

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

/vmm

宣告多重繼承。

/vms

宣告單一繼承。

/vmv

宣告虛擬繼承。

/Za

停用語言擴充功能。

/Zc

指定 /Ze 下的標準行為。

/Ze

啟用語言擴充功能。

/Zg

產生函式原型。

/Zl

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

/Zpn

封裝結構成員。

/Zs

僅檢查語法。

連結

選項

用途

/F

設定堆疊大小。

/LD

建立動態連結程式庫。

/LDd

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

/LN

建立 MSIL 模組。

/link

傳遞指定的選項給 LINK。

/MD

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

/MDd

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

/MT

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

/MTd

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

先行編譯標頭

選項

用途

/Y-

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

/Yc

建立先行編譯標頭檔。

/Yd

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

/Yu

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

其他

選項

用途

/?

列出編譯器選項。

@

指定回應檔 (Response File)。

/analyze

啟用程式碼分析。

/c

編譯而不連結。

/doc

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

/errorReport

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

/fc

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

/H

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

/HELP

列出編譯器選項。

/hotpatch

建立可線上修補的影像。

/J

變更預設 char 型別。

/MP

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

/nologo

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

QIfist

在必須從浮點型別轉換為整數型別時,抑制呼叫 Helper 函式 _ftol (僅適用於 x86)。

/QIPF_B

根據 B CPU 逐步偵錯的 errata,不會產生指令順序,而導致意外結果(僅適用於 IPF)。

/QIPF_C

根據 C CPU 逐步偵錯的 errata,不會產生指令順序,而導致意外結果(僅適用於 IPF)。

/QIPF_fr32

不要使用上層 96 浮點暫存器(僅適用於 IPF)。

/QIPF_noPIC

產生影像加上與位置有關的程式碼 (僅適用於 IPF)。

/QIPF_restrict_plabels

為不在執行階段建立函式的程式增強效能(僅適用於 IPF)。

/showIncludes

在編譯時顯示所有包含檔清單。

/Tc/TC

指定 C 原始程式檔。

/Tp/TP

指定 C++ 原始程式檔。

/V

設定版本字串。

/Wall

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

/W

設定警告層級。

/w

停用所有警告。

/WL

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

/Zm

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


沒有留言:

張貼留言