優化
選項
|
用途
|
創建小代碼。
|
|
創建快速代碼。
|
|
控制內聯展開。
|
|
禁用優化。
|
|
使用全局優化。
|
|
生成內部函數。
|
|
代碼大小優先。
|
|
代碼速度優先。
|
|
使用最大優化 (/Ob2gity /Gs)。
|
|
省略幀指針。 (僅限 x86)
|
代碼生成
選項
|
用途
|
使用 SSE 或 SSE2 指令生成代碼。 (僅限 x86)
|
|
增加 .obj 文件中可尋址節的數目。
|
|
生成要在公共語言運行時上運行的輸出文件。
|
|
指定異常處理模型。
|
|
生成爲特定 x64 結構或爲 AMD64 和 64 位內存擴展技術 (EM64T) 結構中的特定宏結構進行了優化的代碼。
|
|
指定浮點行爲。
|
|
針對 Itanium 處理器進行優化。 僅在 IPF 跨平臺編譯器或 IPF 本機編譯器中可用。
|
|
針對 Itanium2 處理器進行優化。 僅在 IPF 跨平臺編譯器或 IPF 本機編譯器中可用。
|
|
使用調用約定 __cdecl。 (僅限 x86)
|
|
激活堆棧探測。
|
|
啓用字符串池。
|
|
調用掛鉤函數 _penter。
|
|
調用掛鉤函數 _pexit。
|
|
啓用全程序優化。
|
|
啓用最小重新生成。
|
|
啓用運行時類型信息 (RTTI)。
|
|
使用調用約定 __fastcall。 (僅限 x86)
|
|
控制堆棧探測。
|
|
支持數據的纖程安全分配通過使用靜態線程本地存儲區。
|
|
啓用同步異常處理。
|
|
啓用函數級鏈接。
|
|
使用調用約定 __stdcall。 (僅限 x86)
|
|
使用 MSVCRT.lib,創建多線程 DLL。
|
|
使用 MSVCRTD.lib,創建調試多線程 DLL。
|
|
使用 LIBCMT.lib,創建多線程可執行文件。
|
|
使用 LIBCMTD.lib,創建調試多線程可執行文件。
|
|
生成快速先驗。
|
|
移除 try 塊中的 fwait 命令。
|
|
啓用標有 #pragma 循環 () 指令循環的自動並行化。 |
|
啓用自動 vectorization 的報告級別。
|
|
在 Windows 運行時生成的輸出文件運行。
|
輸出文件
選項
|
用途
|
列表配置文件的程序集。
|
|
創建列表文件的程序集。
|
|
重命名程序數據庫文件。
|
|
重命名可執行文件。
|
|
指定預處理輸出文件名。
|
|
創建映射文件。
|
|
創建對象文件。
|
|
指定預編譯頭文件名。
|
|
生成瀏覽器文件。
|
|
插入的代碼與源文件合併。
|
調試
選項
|
用途
|
檢查緩衝區安全。
|
|
與 /RTC1 相同 |
|
強制將傳入寄存器的參數寫入其在函數入口的堆棧上的位置。 此編譯器選項僅適用於 x64 編譯器(本機編譯和跨平臺編譯)。
|
|
啓用運行時錯誤檢查。
|
|
檢測 64 位可移植性問題。
|
|
將完整的調試信息放在所有對象文件中。
|
|
在創建調試庫時,插入 PCH 引用。
|
|
生成與 C 7.0 兼容的調試信息。
|
|
生成完整的調試信息。
|
|
將調試信息包含在與“編輯並繼續”兼容的程序數據庫中。 (僅限 x86)
|
預處理器
選項
|
用途
|
指定在解析傳遞到 #using 指令的文件引用時搜索的目錄。 |
|
在預處理期間保留註釋。
|
|
定義常數和宏。
|
|
將預處理器輸出複製到標準輸出。
|
|
將預處理器輸出複製到標準輸出。
|
|
預處理指定的包含文件。
|
|
強制使用文件名,就象它已被傳遞 #using 指令。 |
|
在目錄中搜索包含文件。
|
|
將預處理器輸出寫入文件。
|
|
移除預定義宏。
|
|
移除所有的預定義宏。
|
|
忽略標準包含目錄。
|
語言
選項
|
用途
|
取消或啓用隱藏的 vtordisp 選件類成員。
|
|
對指向成員的指針使用最佳的基。
|
|
對指向成員的指針使用完全一般性。
|
|
聲明多重繼承。
|
|
聲明單一繼承。
|
|
聲明虛擬繼承。
|
|
選擇 volatile 關鍵字如何解釋。
|
|
禁用語言擴展。
|
|
指定在 /Ze 下的標準行爲。 |
|
啓用語言擴展。
|
|
生成函數原型。
|
|
從 .obj 文件中移除默認庫名值。
|
|
/Zp n |
封裝結構成員。
|
只檢查語法。
|
鏈接
選項
|
用途
|
設置堆棧大小。
|
|
創建動態鏈接庫。
|
|
創建調試動態鏈接庫。
|
|
創建 MSIL 模塊。
|
|
將指定的選項傳遞給 LINK。
|
|
使用 MSVCRT.lib,編譯以創建多線程 DLL。
|
|
使用 MSVCRTD.lib,編譯以創建調試多線程 DLL。
|
|
使用 LIBCMT.lib,編譯以創建多線程可執行文件。
|
|
使用 LIBCMTD.lib,編譯以創建調試多線程可執行文件。
|
預編譯頭
選項
|
用途
|
忽略當前生成中的所有其他預編譯頭編譯器選項。
|
|
創建預編譯頭文件。
|
|
將完整的調試信息放在所有對象文件中。
|
|
在生成期間使用預編譯頭文件。
|
雜項
選項
|
用途
|
列出編譯器選項。
|
|
指定響應文件。
|
|
啓用代碼分析。
|
|
編譯但不鏈接。
|
|
將文檔註釋處理到一個 XML 文件中。
|
|
可以提供內部編譯器錯誤 (ICE) 信息直接對 Visual C++ 團隊。
|
|
顯示源代碼文件的完整路徑傳遞給診斷文本的 cl.exe。
|
|
限制外部(公共)名稱的長度。
|
|
列出編譯器選項。
|
|
創建可熱修補的映像。
|
|
更改默認的 char 類型。
|
|
編譯器和鏈接器將創建在內核中執行的二進制文件。
|
|
|
|
同時生成多個源文件。
|
|
取消顯示登錄版權標誌。
|
|
當需要從浮點型轉換爲整型時,取消調用 Helper 函數 _ftol。 (僅限 x86)
|
|
不生成會導致 B CPU 單步執行勘誤表中所載異常結果的指令序列。 (僅限 IPF)
|
|
不生成會導致 B CPU 單步執行勘誤表中所載異常結果的指令序列。 (僅限 IPF)
|
|
不使用高 96 位浮點寄存器。 (僅限 IPF)
|
|
生成具有位置相關代碼的映像(僅限 IPF)。
|
|
爲在運行時不創建函數的程序增強性能。 (僅限 IPF)
|
|
顯示所有的列表在編譯時包含文件。
|
|
指定 C 源文件。
|
|
指定 C++ 源文件。
|
|
設置版本字符串。
|
|
啓用所有警告,包括默認情況下禁用的警告。
|
|
設置警告等級。
|
|
禁用所有警告。
|
|
在從命令行編譯 C++ 源代碼時啓用錯誤消息和警告消息的單行診斷。
|
|
指定預編譯頭內存分配限制。
|
微軟C/C++ 編譯器選項 | ||
-優化- | ||
/O1 | 最小化空間 | minimize space |
/Op[-] | 改善浮點數一致性 | improve floating-pt consistency |
/O2 | 最大化速度 | maximize speed |
/Os | 優選代碼空間 | favor code space |
/Oa | 假設沒有別名 | assume no aliasing |
/Ot | 優選代碼速度 | favor code speed |
/Ob | 內聯展開(默認 n=0) | inline expansion (default n=0) |
/Ow | 假設交叉函數別名 | assume cross-function aliasing |
/Od | 禁用優化(默認值) | disable optimizations (default) |
/Ox | 最大化選項。(/Ogityb2 /Gs) | maximum opts. (/Ogityb1 /Gs) |
/Og | 啓用全局優化 | enable global optimization |
/Oy[-] | 啓用框架指針省略 | enable frame pointer omission |
/Oi | 啓用內建函數 | enable intrinsic functions |
-代碼生成- | ||
/G3 | 爲 80386 進行優化 | optimize for 80386 |
/G4 | 爲 80486 進行優化 | optimize for 80486 |
/GR[-] | 啓用 C++ RTTI | enable C++ RTTI |
/G5 | 爲 Pentium 進行優化 | optimize for Pentium |
/G6 | 爲 Pentium Pro 進行優化 | optimize for Pentium Pro |
/GX[-] | 啓用 C++ 異常處理(與 /EHsc 相同) | enable C++ EH (same as /EHsc) |
/EHs | 啓用同步 C++ 異常處理 | enable synchronous C++ EH |
/GD | 爲 Windows DLL 進行優化 | optimize for Windows DLL |
/GB | 爲混合模型進行優化(默認) | optimize for blended model (default) |
/EHa | 啓用異步 C++ 異常處理 | enable asynchronous C++ EH |
/Gd | __cdecl 調用約定 | __cdecl calling convention |
/EHc | extern“C”默認爲 nothrow | extern "C" defaults to nothrow |
/Gr | __fastcall 調用約定 | __fastcall calling convention |
/Gi[-] | 啓用增量編譯 | enable incremental compilation |
/Gz | __stdcall 調用約定 | __stdcall calling convention |
/Gm[-] | 啓用最小重新生成 | enable minimal rebuild |
/GA | 爲 Windows 應用程序進行優化 | optimize for Windows Application |
/Gf | 啓用字符串池 | enable string pooling |
/QIfdiv[-] | 啓用 Pentium FDIV 修復 | enable Pentium FDIV fix |
/GF | 啓用只讀字符串池 | enable read-only string pooling |
/QI0f[-] | 啓用 Pentium 0x0f 修復 | enable Pentium 0x0f fix |
/Gy | 分隔鏈接器函數 | separate functions for linker |
/GZ | 啓用運行時調試檢查 | enable runtime debug checks |
/Gh | 啓用鉤子函數調用 | enable hook function call |
/Ge | 對所有函數強制堆棧檢查 | force stack checking for all funcs |
/Gs[num] | 禁用堆棧檢查調用 | disable stack checking calls |
-輸出文件- | ||
/Fa[file] | 命名程序集列表文件 | name assembly listing file |
/Fo | 命名對象文件 | name object file |
/FA[sc] | 配置程序集列表 | configure assembly listing |
/Fp | 命名預編譯頭文件 | name precompiled header file |
/Fd[file] | 命名 .PDB 文件 | name .PDB file |
/Fr[file] | 命名源瀏覽器文件 | name source browser file |
/Fe | 命名可執行文件 | name executable file |
/FR[file] | 命名擴展 .SBR 文件 | name extended .SBR file |
/Fm[file] | 命名映射文件 | name map file |
-預處理器- | ||
/FI | 命名強制包含文件 | name forced include file |
/C | 不吸取註釋 | don't strip comments |
/U | 移除預定義宏 | remove predefined macro |
/D{=|#} | 定義宏 | define macro |
/u | 移除所有預定義宏 | remove all predefined macros |
/E | 將預處理定向到標準輸出 | preprocess to stdout |
/I | 添加到包含文件的搜索路徑 | add to include search path |
/EP | 將預處理定向到標準輸出,不要帶行號 | preprocess to stdout, no #line |
/X | 忽略“標準位置” | ignore "standard places" |
/P | 預處理到文件 | preprocess to file |
-語言- | ||
/Zi | 啓用調試信息 | enable debugging information |
/Zl | 忽略 .OBJ 中的默認庫名 | omit default library name in .OBJ |
/ZI | 啓用調試信息的“編輯並繼續”功能 | enable Edit and Continue debug info |
/Zg | 生成函數原型 | generate function prototypes |
/Z7 | 啓用舊式調試信息 | enable old-style debug info |
/Zs | 只進行語法檢查 | syntax check only |
/Zd | 僅要行號調試信息 | line number debugging info only |
/vd{0|1} | 禁用/啓用 vtordisp | disable/enable vtordisp |
/Zp[n] | 在 n 字節邊界上包裝結構 | pack structs on n-byte boundary |
/vm | 指向成員的指針類型 | type of pointers to members |
/Za | 禁用擴展(暗指 /Op) | disable extensions (implies /Op) |
/noBool | 禁用“bool”關鍵字 | disable "bool" keyword |
/Ze | 啓用擴展(默認) | enable extensions (default) |
- 雜項 - | ||
/?, /help | 打印此幫助消息 | print this help message |
/c | 只編譯,不鏈接 | compile only, no link |
/W | 設置警告等級(默認 n=1) | set warning level (default n=1) |
/H | 最大化外部名稱長度 | max external name length |
/J | 默認 char 類型是 unsigned | default char type is unsigned |
/nologo | 取消顯示版權消息 | suppress copyright message |
/WX | 將警告視爲錯誤 | treat warnings as errors |
/Tc | 將文件編譯爲 .c | compile file as .c |
/Yc[file] | 創建 .PCH 文件 | create .PCH file |
/Tp | 將文件編譯爲 .cpp | compile file as .cpp |
/Yd | 將調試信息放在每個 .OBJ 中 | put debug info in every .OBJ |
/TC | 將所有文件編譯爲 .c | compile all files as .c |
/TP | 將所有文件編譯爲 .cpp | compile all files as .cpp |
/Yu[file] | 使用 .PCH 文件 | use .PCH file |
/V | 設置版本字符串 | set version string |
/YX[file] | 自動的 .PCH 文件 | automatic .PCH |
/w | 禁用所有警告 | disable all warnings |
/Zm | 最大內存分配(默認爲 %) | max memory alloc (% of default) |
-鏈接- | ||
/MD | 與 MSVCRT.LIB 鏈接 | link with MSVCRT.LIB |
/MDd | 與 MSVCRTD.LIB 調試庫鏈接 | link with MSVCRTD.LIB debug lib |
/ML | 與 LIBC.LIB 鏈接 | link with LIBC.LIB |
/MLd | 與 LIBCD.LIB 調試庫鏈接 | link with LIBCD.LIB debug lib |
/MT | 與 LIBCMT.LIB 鏈接 | link with LIBCMT.LIB |
/MTd | 與 LIBCMTD.LIB 調試庫鏈接 | link with LIBCMTD.LIB debug lib |
/LD | 創建 .DLL | Create .DLL |
/F | 設置堆棧大小 | set stack size |
/LDd | 創建 .DLL 調試庫 | Create .DLL debug libary |
/link | [鏈接器選項和庫] | [linker options and libraries] |
摘自他人博客