首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC++ 編譯器/連結器選項完整參考表:優化、代碼生成、輸出、預處理、語言與連結全覆蓋

     編輯:關於VC++

使用說明

本表整理自 VC6 `cl.exe /?` 與 `link.exe /?`,分類對應專案屬性頁 (Project → Settings → C/C++ / Link)。粗體 為常用/關鍵選項。參數後加 `-` 表示停用 (如 `/Oy-`)。

一、優化選項 (/O)

選項說明備註
/O1最小化程式碼體積等同 /Os /Og /Oy /Ob1 /GF /Gy
/O2最大化執行速度等同 /Ot /Og /Oi /Oy /Ob2 /GF /Gy
/Os偏好程式碼體積
/Ot偏好執行速度
/Oa假設無別名 (激進優化)可能破壞指標別名代碼
/Ow假設跨函式別名保守優化
/Od停用優化 (Debug 預設)保留完整除錯資訊
/Ox最大優化組合 (舊版)建議用 /O2
/Og啟用全域優化
/Oy[-]省略幀指標 (EBP)Release 預設開啟,Debug 需關閉
/Oi啟用內建函式 (memcpy 等)以指令取代呼叫
/Op[-]浮點一致性優化/Za 暗含啟用

二、代碼生成 (/G)

選項說明備註
/G3~G6針對 386/486/Pentium/Pro 優化已過時,建議 /arch:SSE2 等
/GR[-]啟用 RTTI (dynamic_cast, typeid)MFC 專案通常需開啟
/GX[-]同步 C++ 例外處理等同 /EHsc,Release 建議開啟
/EHs同步例外處理C++ 標準
/EHa非同步例外處理 (SEH)效能較差,含硬體例外
/EHcextern "C" 預設 nothrow
/Gd__cdecl 呼叫慣例 (C 預設)呼叫者清堆疊
/Gr__fastcall 呼叫慣例前兩參數用暫存器
/Gz__stdcall 呼叫慣例 (WinAPI)被呼叫者清堆疊
/GAWindows 應用程式優化
/GB混合模型優化 (預設)
/GDWindows DLL 優化
/Gf啟用字串池 (唯讀合併)舊選項
/GF啟用唯讀字串池節省空間,字串常數共享
/Gy函式級連結 (COMDAT)配合 /OPT:REF 移除未用函式
/GZ執行期偵錯檢查 (Debug)堆疊/變數初始化檢查
/Gh啟用 _penter 鉤子函式效能分析用
/Ge強制所有函式堆疊檢查
/Gs[num]停用堆疊檢查 / 設閾值預設 /Gs1 (1 頁)
/Gm[-]最小重建 (啟用 /Gm 需 /Zi)依賴 .idb 檔
/Gi[-]增量編譯舊版功能

三、輸出檔案 (/F)

選項說明
/Fa[file]組合語言列表檔
/Fa[sc]列表檔內容配置 (原始碼/機器碼/組語)
/Fo指定 .obj 輸出目錄/檔名
/Fp指定預編譯標頭 .pch 路徑
/Fd[file]指定 .pdb 偵錯資訊檔
/Fr[file]瀏覽資訊 .sbr (舊版)
/FR[file]擴充瀏覽資訊 .sbr
/Fe指定 .exe 輸出檔名
/Fm[file]對應檔 .map

四、預處理器 (/P /C /D /U /I /X /E /EP)

選項說明
/D name[=val]定義巨集 (等同 #define)
/U name取消定義巨集
/I path加入標頭搜尋路徑
/X忽略標準包含路徑
/FI file強制包含檔案 (如 stdafx.h)
/C保留註解於預處理輸出
/E預處理輸出至 stdout (含 #line)
/EP預處理輸出至 stdout (無 #line)
/P預處理輸出至 .i 檔

五、語言與偵錯 (/Z /Zi /ZI /Z7 /Zd /Zp /vd /Za /Ze /noBool)

選項說明
/Zi產生 .pdb 偵錯資訊 (非 Edit&Continue)
/ZIEdit & Continue 偵錯資訊 (Debug 預設)
/Z7舊式偵錯資訊 (寫入 .obj)
/Zd僅行號資訊
/Zp[n]結構對齊邊界 (1/2/4/8/16)
/Zs僅語法檢查,不產出 .obj
/vd0/1停用/啟用 vtordisp (虛函式位移)
/vm成員指標表示法
/Za停用 MS 擴充 (嚴格 ANSI)
/Ze啟用 MS 擴充 (預設)
/noBool停用 bool 關鍵字

六、雜項 (/W /w /WX /c /nologo /Tc /Tp /TC /TP /Yc /Yu /YX /Yd /V /Zm)

選項說明
/Wn警告等級 (1~4,預設 1,建議 3/4)
/w停用所有警告
/WX視警告為錯誤
/c僅編譯,不連結
/nologo隱藏版權資訊
/Tc file強制編譯為 C
/Tp file強制編譯為 C++
/TC所有檔案編譯為 C
/TP所有檔案編譯為 C++
/Yc[file]建立預編譯標頭 .pch
/Yu[file]使用預編譯標頭
/YX自動預編譯標頭
/Yd每個 .obj 含完整偵錯資訊
/V str嵌入版本字串
/Zm val最大記憶體配置百分比 (預編譯標頭用)

七、連結器選項 (Project → Settings → Link)

選項說明
/MD /MDd動態連結 CRT (Release/Debug)
/MT /MTd靜態連結 CRT (Release/Debug)
/ML /MLd單執行緒靜態 CRT (舊版,已棄用)
/LD /LDd建立 DLL (Release/Debug)
/F num設定堆疊大小 (位元組)
/link [opts]傳遞選項給連結器
/subsystem:console/windows子系統類型
/incremental:yes/no增量連結
/debug產生偵錯資訊
/pdb:file指定 .pdb 檔
/opt:ref/icf移除未用函式/合併相同函式
/entry:symbol指定進入點
/stack:reserve[,commit]堆疊保留/認可大小

八、專案類型對應的關鍵設定組合

專案類型C/C++ 關鍵選項Link 關鍵選項
MFC DLL (共用)/MDd /D_AFXDLL /ZI /Od/DLL /MDd /incremental:yes
MFC EXE (共用)/MDd /D_AFXDLL /ZI /Od/subsystem:windows /MDd
MFC 靜態連結/MTd /ZI /Od/MTd
非 MFC 控制台/MTd /ZI /Od/subsystem:console /MTd
Release 優化/O2 /MD /GF /Gy /Zi/MD /opt:ref,icf
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved