編譯選項—微軟官方+各地總結

優化
選項
用途
創建小代碼。
創建快速代碼。
控制內聯展開。
禁用優化。
使用全局優化。
生成內部函數。
代碼大小優先。
代碼速度優先。
使用最大優化 (/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 循環 () 指令循環的自動並行化。

/Qvec-report (Auto-Vectorizer Reporting Level)

啓用自動 vectorization 的報告級別。
在 Windows 運行時生成的輸出文件運行。
輸出文件
選項
用途
列表配置文件的程序集。
創建列表文件的程序集。
重命名程序數據庫文件。
重命名可執行文件。
指定預處理輸出文件名。
創建映射文件。
創建對象文件。
指定預編譯頭文件名。

/FR/Fr

生成瀏覽器文件。
插入的代碼與源文件合併。
調試
選項
用途
檢查緩衝區安全。

/RTC1 相同

強制將傳入寄存器的參數寫入其在函數入口的堆棧上的位置。 此編譯器選項僅適用於 x64 編譯器(本機編譯和跨平臺編譯)。
啓用運行時錯誤檢查。
檢測 64 位可移植性問題。
將完整的調試信息放在所有對象文件中。
在創建調試庫時,插入 PCH 引用。
生成與 C 7.0 兼容的調試信息。
生成完整的調試信息。
將調試信息包含在與“編輯並繼續”兼容的程序數據庫中。 (僅限 x86)
預處理器
選項
用途

指定在解析傳遞到 #using 指令的文件引用時搜索的目錄。

在預處理期間保留註釋。
定義常數和宏。
將預處理器輸出複製到標準輸出。
將預處理器輸出複製到標準輸出。
預處理指定的包含文件。

強制使用文件名,就象它已被傳遞 #using 指令。

在目錄中搜索包含文件。
將預處理器輸出寫入文件。
移除預定義宏。
移除所有的預定義宏。
忽略標準包含目錄。
語言
選項
用途
在源代碼中啓用 #pragma omp
取消或啓用隱藏的 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)
顯示所有的列表在編譯時包含文件。

/Tc/TC

指定 C 源文件。

/Tp/TP

指定 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]
 

摘自他人博客 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章