vc可以可以通過Settings -->Project-->C/C++-->Customize來設定這個編譯開關
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:快速檢查語法錯誤
--------------------------
vc所支援的檔案類型
DSW:全稱是Developer Studio Workspace,最進階別的設定檔,記錄了整個工作空間
的配置資訊,她是一個純文字的檔案,在vc建立新項目的時候自動產生
DSP:全稱是Developer Studio Project,也是一個設定檔,不過她記錄的是一個項目
的所有配置資訊,純文字檔案
OPT:與DSW、DSP配合使用的設定檔,她記錄了與機器硬體有關的資訊,同一個項目在
不同的機器上的opt檔案內容是不同的
CLW:記錄了跟ClassWizard相關的資訊,如果丟失了clw檔案,那麼在Class View面板裡
就沒有類資訊
PLG:實際上是一個超文字檔,可以用Internet Explorer開啟,記錄了Build的過程,
是一個日誌型檔案
RC:資源描述檔案,記錄了所有的資源資訊,在資源編輯器裡作的修改,實際上都是對
RC檔案的修改
RC2:附加的資源描述檔案,不能直接資源編輯器修改,只能手工添加,可以用來添加額
外的資源
RES:經過資源編輯器編譯之後的資源檔,以二進位方式存放
SBR:編譯器產生的瀏覽資訊檔,在代碼導航的時候非常有用,她需要在編譯時間指
定/FR或者/Fr開關
BSC:BSCMAKE.EXE將所有的SBR檔案作為輸入,經過處理之後輸出一個BSC檔案,在代碼
導航的時候實際用到的是BSC檔案
ILK:當選定漸增型編譯串連時,連接器自動產生ILK檔案,記錄串連資訊
PDB:全稱是Program DataBase,即程式資料庫檔案,用來記錄調試資訊,是一個相當重
要的檔案,沒有他,程式無法正常調試
LIB:如果項目輸出是Dll的話,一般會輸出一個跟項目同名的Lib檔案,記錄輸出的函數
資訊
EXP:同Lib,是跟Dll一起產生的輸出檔案
PCH:全稱是PreCompiled Header,就是預先編譯好的標頭檔,在編譯時間指定/Yu開關時
編譯器自動產生