天天看點

VC 編譯指令開關

/C:在預處理輸出中保留注釋語句

/c:隻編譯,不連接配接,相當于在"Build"菜單下選擇了"Compile"

/D:定義常量和宏,與源程式裡的#define 有相同效果

/E:預處理C、C++源檔案,将源檔案中所有的預編譯指令及宏展開,将注釋去掉,然後将預處理器的輸出拷貝至标準輸出裝置輸出,并且在每個檔案的開頭和末尾加入#line

/EH:指定編譯器用何種異常處理模型

/EP:同/E,隻是去掉了#line

/F:設定程式的堆棧大小

/FA:設定生成何種清單檔案(彙編、彙編與機器碼、彙編與源碼、彙編與機器碼以及源碼)

/Fa:指定用/FA設定的清單檔案的存放路徑及(或)檔案名

/FD:生成檔案的互相依賴資訊

/Fd:設定程式資料庫檔案(PDB)的存放路徑及(或)檔案名

/Fe:設定最終可執行檔案的存放路徑及(或)檔案名

/FI:預處理指定的頭檔案,與源檔案中的#include有相同效果

/Fm:建立map檔案

/Fo:設定編譯後Obj檔案的存放路徑及(或)檔案名

/Fp:設定預編譯檔案(pch)的存放路徑及(或)檔案名

/FR:生成浏覽資訊(sbr)檔案

/Fr:同/FR,不同之處在于/Fr不包括局部變量資訊

/G3:為80386處理器優化代碼生成

/G4:為80486處理器優化代碼生成

/G5:為Pentium處理器優化代碼生成

/G6:為Pentium Pro處理器優化代碼生成

/GA:為Windows應用程式作優化

/GB:為Pentium處理器優化代碼生成,使用80386、80486、Pentium、Pentium Pro的混合指令集,是代碼生成的預設選項(程式屬性選項中Processor對應Blend)

/GD:為Windows動态庫(dll)作優化,此開關在VC6中沒有實作

/Gd:指定使用__cdecl的函數調用規則

/Ge:激活堆棧檢測

/GF:消除程式中的重複的字元串,并将她放到隻讀的緩沖區中

/Gf:消除程式中的重複字元串

/Gh:在每個函數的開頭調用鈎子(hook)函數--penter

/Gi:允許漸進編譯

/Gm:允許最小化rebuild

/GR:允許運作時類型資訊(Run-Time Type Infomation)

/Gr:指定使用__fastcall的函數調用規則

/Gs:控制堆棧檢測所用記憶體大小

/GT:支援用__declspec(thread)配置設定的資料的fier-safety

/GX:允許同步異常處理,與/EHsc開關等價

/Gy:允許編譯器将每一個函數封裝成COMDATs的形式,供連接配接器調用

/GZ:允許在Debug build 的時候捕捉Release build的錯誤

/Gz:指定使用__stdcall的函數調用規則

/H:限制外部名字的長度

/HELP:列出編譯器的所有的指令開關

/I:指定頭檔案的搜尋路徑

/J:将char的預設類型從signed char改成unsigned char

/LD:建立一個動态連接配接庫

/LDd:建立一個Debug版本的動态連結庫

/link:将指定的選項傳給連接配接器

/MD:選擇多線程、DLL版本的C Run-Time庫

/MDd:選擇多線程、DLL、Debug版本的C Run-Time庫

/ML:選擇單線程版本的C Run—Time庫

/MLd:選擇單線程、Debug版本的C Run—Time庫

/MT:選擇多線程版本的C Run-Time庫

/MTd:選擇多線程、Debug版本的C Run—Time庫

/nologo:不顯示程式的版權資訊

/O1:優化使産生的可執行代碼最小

/O2:優化使産生的可執行代碼速度最快

/Oa:訓示編譯器程式裡沒有使用别名,可以提高程式的執行速度

/Ob:控制内聯(inline)函數的展開

/Od:禁止代碼優化

/Og:使用全局優化

/Oi:用内部函數去代替程式裡的函數調用,可以使程式運作的更快,但程式的長度變長

/Op:提高浮點數比較運算的一緻性

/Os:産生盡可能小的可執行代碼

/Ot:産生盡可能塊的可執行代碼

/Ow:訓示編譯器在函數體内部沒有使用别名

/Ox:組合了幾個優化開關,達到盡可能多的優化

/Oy:阻止調用堆棧裡建立幀指針

/Q1f:對核心級的裝置驅動程式生成單獨的調試資訊

/QI0f:對Pentium 0x0f錯誤指令作修正

/Qifdiv:對Pentium FDIV錯誤指令作修正

/P:将預處理輸出寫到指定檔案裡,檔案的字尾名為I

/TC:将指令行上的所有檔案都當作C源程式編譯,不管字尾名是否為.c

/Tc:将指定的檔案當作C源程式編譯,不管字尾名是否為.c

/TP:将指令行上的所有檔案都當作C++源程式編譯,不管字尾名是否為.cpp

/Tp:将指定檔案當作C++源程式編譯,不管字尾名是否為.cpp

/U:去掉一個指定的前面定義的符号或常量

/u:去掉所有前面定義的符号或常量

/V:在編譯的obj檔案裡嵌入版本号

/vd:禁止/允許構造函數置換

/vmb:選擇指針的表示方法,使用這個開關,在聲明指向某個類的成員的指針之前,必須先定義這個類

/vmg:選擇指針的表示方法,使用這個開關,在聲明指向某個類的成員的指針之前,不必先定義這個類,但要首先指定這個類是使用何種繼承方法

/vmm:設定指針的表示方法為Single Inheritance and Multiple Inheritance

/vms:設定指針的表示方法為Single Inheritance

/vmv:設定指針的表示方法為Any class

/W:設定警告等級

/w:禁止所有警告

/X:阻止編譯器搜尋标準的include 目錄

/Yc:建立預編譯頭檔案(pch)

/Yd:在所有的obj檔案裡寫上完全的調試資訊

/Yu:在build過程中使用指定的預編譯頭檔案

/YX:訓示編譯器若預編譯頭檔案存在,則使用它,若不存在,則建立一個

/Z7:生成MSC7.0相容的調試資訊

/Za:禁止語言擴充(Microsoft Extensions to C)

/Zd:調試資訊隻包含外部和全局的符号資訊以及行号資訊

/Ze:允許語言擴充(Microsoft Extensions to C)

/Zg:為源檔案裡面定義的每個函數生成函數原型

/ZI:生成程式庫檔案(Pdb)并支援Edit and Continue調試特性

/Zi:生成程式庫檔案(pdb),包含類型資訊和符号調試資訊

/ZL:從obj檔案裡去掉預設的庫檔案名

/Zm:設定編譯器的記憶體配置設定xianzhi

/Zn:禁止浏覽資訊檔案裡面的封裝

/Zp:設定結構成員在記憶體裡面的封裝格式

/Zs:快速檢查文法錯誤

繼續閱讀