優(yōu)化
選項(xiàng) 作用
/O1 創(chuàng)建小代碼
/O2 創(chuàng)建快速代碼
/Oa 假設(shè)沒(méi)有別名
/Ob 控制內(nèi)聯(lián)展開
/Od 禁用優(yōu)化
/Og 使用全局優(yōu)化
/Oi 生成內(nèi)部函數(shù)
/Op 改善浮點(diǎn)數(shù)一致性
/Os 代碼大小優(yōu)先
/Ot 代碼速度優(yōu)先
/Ow 假定在函數(shù)調(diào)用中使用別名
/Ox 使用最大優(yōu)化 (/Ob1gity /Gs)
/Oy 省略框架指針
代碼生成
選項(xiàng) 作用
/clr 啟用 C++ 的托管擴(kuò)展并產(chǎn)生在公共語(yǔ)言運(yùn)行庫(kù)上運(yùn)行的輸出文件
/EH 指定異常處理模型
/G3 優(yōu)化代碼以優(yōu)選 386 處理器。在 Visual C++ 5.0 中已經(jīng)停用,編譯器將忽略此選項(xiàng)
/G4 優(yōu)化代碼以優(yōu)選 486 處理器。在 Visual C++ 5.0 中已經(jīng)停用,編譯器將忽略此選項(xiàng)
/G5 優(yōu)化代碼以優(yōu)選 Pentium
/GB 與 /G6 等效;將 _M_IX86 的值設(shè)置為 600
/Gd 使用 __cdecl 調(diào)用約定
/Ge 激活堆棧探測(cè)
/GF
/GF 啟用字符串池
/GH 調(diào)用掛鉤函數(shù) _penter
/GH 調(diào)用掛鉤函數(shù) _pexit
/GL 啟用全程序優(yōu)化
/Gm 啟用最小重新生成
/Gr 啟用運(yùn)行時(shí)類型信息 (RTTI)
/Gr 使用 __fastcall 調(diào)用約定
/GS 控制堆棧探測(cè)
/GT 支持使用靜態(tài)線程本地存儲(chǔ)區(qū)分配的數(shù)據(jù)的纖程安全
/GX 啟用同步異常處理
/Gy 啟用函數(shù)級(jí)鏈接
/GZ 使用 __stdcall 調(diào)用約定
/MD 使用 MSVCRT.lib 創(chuàng)建多線程 DLL
/MDd 使用 MSVCRTD.lib 創(chuàng)建調(diào)試多線程 DLL
/ML 使用 LIBC.lib 創(chuàng)建單線程可執(zhí)行文件
/MLd 使用 LIBCD.lib 創(chuàng)建調(diào)試單線程可執(zhí)行文件
/MT 使用 LIBCMT.lib 創(chuàng)建多線程可執(zhí)行文件
/MTd 使用 LIBCMTD.lib 創(chuàng)建調(diào)試多線程可執(zhí)行文件
輸出文件
選項(xiàng) 作用
/FA
/FA 創(chuàng)建列表文件
設(shè)置列表文件名
/Fd 重命名程序數(shù)據(jù)庫(kù)文件
/Fe 重命名可執(zhí)行文件
/Fm 創(chuàng)建映射文件
/Fo 創(chuàng)建對(duì)象文件
/Fp 指定預(yù)編譯頭文件名
/FR
/FR 生成瀏覽器文件
/Fx 將插入的代碼與源文件合并
調(diào)試
選項(xiàng) 作用
/GS 緩沖區(qū)安全檢查
/GZ 與 /RTC1 相同
/RTC 啟用運(yùn)行時(shí)錯(cuò)誤檢查
/Wp64 檢測(cè) 64 位可移植性問(wèn)題
/Yd 將完整的調(diào)試信息放在所有對(duì)象文件中
/Yl 創(chuàng)建調(diào)試庫(kù)時(shí)插入 PCH 引用
/Z7 生成與 C 7.0 兼容的調(diào)試信息
/Zd 生成行號(hào)
/Zi 生成完整的調(diào)試信息
預(yù)處理器
選項(xiàng) 作用
/AI 指定在解析傳遞到#using 指令的文件引用時(shí)搜索的目錄
/c 在預(yù)處理期間保留注釋
/D 定義常數(shù)和宏
/E 將預(yù)處理器輸出復(fù)制到標(biāo)準(zhǔn)輸出
/EP 將預(yù)處理器輸出復(fù)制到標(biāo)準(zhǔn)輸出
/Fl 預(yù)處理指定的包含文件
/FU 強(qiáng)制使用文件名,就像它已被傳遞到#using 指令一樣
/I 在目錄中搜索包含文件
/P 將預(yù)處理器輸出寫入文件
/U 移除預(yù)定義宏
/U 移除所有的預(yù)定義宏
/X 忽略標(biāo)準(zhǔn)包含目錄
/ZI 將調(diào)試信息包含在與“編輯并繼續(xù)”兼容的程序數(shù)據(jù)庫(kù)中
(附“編輯并繼續(xù)”:編輯并繼續(xù)”處理大多數(shù)類型的代碼更改。但是,在程序執(zhí)行期間,某些更改無(wú)法應(yīng)用。若要應(yīng)用這些更改,必須暫停執(zhí)行并生成新版本的代碼。
在調(diào)試會(huì)話期間不能應(yīng)用下列 C/C++ 更改:
大多數(shù)的全局或靜態(tài)數(shù)據(jù)的更改。
從其他計(jì)算機(jī)復(fù)制并且未在本地生成的可執(zhí)行文件的更改。
影響一個(gè)對(duì)象(如類的數(shù)據(jù)成員)布局的數(shù)據(jù)類型的更改。
添加超過(guò) 64k 字節(jié)的新代碼或數(shù)據(jù)。
添加要求在指令指針前存在構(gòu)造函數(shù)的變量。
影響需要運(yùn)行時(shí)初始化的代碼的更改。
在某些實(shí)例中,添加異常處理程序。
資源文件的更改。
只讀文件中的代碼更改。
沒(méi)有相應(yīng) PDB 文件的代碼的更改。
沒(méi)有對(duì)象文件的代碼的更改。
在以下調(diào)試方案中,“編輯并繼續(xù)”不可用:
在 Windows 98 上調(diào)試。
混合模式(本機(jī)/托管)調(diào)試。
SQL 調(diào)試。
調(diào)試 Dr. Watson 轉(zhuǎn)儲(chǔ)。
在未選擇“在未處理的異常上展開調(diào)用堆棧”選項(xiàng)的情況下,在發(fā)生未處理的異常之后編輯代碼。
調(diào)試嵌入式運(yùn)行庫(kù)應(yīng)用程序。
從“調(diào)試”菜單中使用“附加到”調(diào)試應(yīng)用程序,而不是使用“啟動(dòng)”運(yùn)行應(yīng)用程序。
調(diào)試優(yōu)化后的代碼。
當(dāng)目標(biāo)為 64 位應(yīng)用程序時(shí),調(diào)試托管代碼。如果想要使用“編輯并繼續(xù)”,必須將目標(biāo)平臺(tái)設(shè)置為 x86。((“Project 屬性”對(duì)話框->“編譯”選項(xiàng)卡->“高級(jí)編譯器”設(shè)置。)
如果由于生成錯(cuò)誤無(wú)法生成新版本的代碼,則對(duì)舊版本的代碼進(jìn)行調(diào)試)
語(yǔ)言
選項(xiàng) 作用
/noBool 取消 C++ bool、true 和 false 關(guān)鍵字
/vd 取消或啟用隱藏的 vtordisp 類成員
/vmb 對(duì)指向成員的指針使用最佳的基
/vmg 對(duì)指向成員的指針使用完全一般性
/vmm 聲明多重繼承
/vms 聲明單一繼承
/vmv 聲明虛擬繼承
/Za 禁用語(yǔ)言擴(kuò)展
/Zc 在 /Ze 下指定標(biāo)準(zhǔn)行為
/Ze 啟用語(yǔ)言擴(kuò)展
/Zg 生成函數(shù)原型
/Zl 從 .obj 文件中移除默認(rèn)庫(kù)名
/Zp n 封裝結(jié)構(gòu)成員
/Zs 只檢查語(yǔ)法
鏈接
選項(xiàng) 作用
/F 設(shè)置堆棧大小
/LD 創(chuàng)建動(dòng)態(tài)鏈接庫(kù)
/LDd 創(chuàng)建調(diào)試動(dòng)態(tài)鏈接庫(kù)
/link 將指定的選項(xiàng)傳遞給 LINK
/MD 使用 MSVCRT.lib 編譯以創(chuàng)建多線程 DLL
/MDd 使用 MSVCRTD.lib 編譯以創(chuàng)建調(diào)試多線程 DLL
/ML 使用 LIBC.lib 編譯以創(chuàng)建單線程可執(zhí)行文件
/MLd 使用 LIBCD.lib 編譯以創(chuàng)建調(diào)試單線程可執(zhí)行文件
/MT 使用 LIBCMT.lib 編譯以創(chuàng)建多線程可執(zhí)行文件
/MTd 使用 LIBCMTD.lib 編譯以創(chuàng)建調(diào)試多線程可執(zhí)行文件
預(yù)編譯頭
選項(xiàng) 作用
/Y- 忽略當(dāng)前生成中的所有其他預(yù)編譯頭編譯器選項(xiàng)
/Yc 創(chuàng)建預(yù)編譯頭文件
/Yd 將完整的調(diào)試信息放在所有對(duì)象文件中
/Yu 在生成期間使用預(yù)編譯頭文件
/YX 自動(dòng)處理預(yù)編譯頭
雜項(xiàng)
選項(xiàng) 作用
@ 指定響應(yīng)文件
/? 列出編譯器選項(xiàng)
/c 編譯但不鏈接
/H 限制外部(公共)名稱的長(zhǎng)度
/HELP 列出編譯器選項(xiàng)
/J 更改默認(rèn)的 char 類型
/NOLOGO 取消顯示登錄版權(quán)標(biāo)志
/QI0f 確保 Pentium 0F 指令沒(méi)有問(wèn)題
/QIfdiv FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 Intel Pentium 微處理器的變通方法
QIfist 當(dāng)需要從浮點(diǎn)類型轉(zhuǎn)換為整型時(shí)取消 Helper 函數(shù) _ftol 的調(diào)用
/showIncludes 在編譯期間顯示所有包含文件的列表
/Tc
/Tc 指定 C 源文件
/Tp
/Tp 指定 C++ 源文件
/V 設(shè)置版本字符串
/w 設(shè)置警告等級(jí)
/w 禁用所有警告
/Wall 啟用所有警告,包括默認(rèn)情況下禁用的警告
/WL 在從命令行編譯 C++ 源代碼時(shí)啟用錯(cuò)誤信息和警告消息的單行診斷
/Zm 設(shè)置編譯器的內(nèi)存分配限制
CL 命令行使用下列語(yǔ)法:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
下表說(shuō)明CL 命令的輸入項(xiàng)意義
option 一個(gè)或多個(gè) CL 選項(xiàng)。請(qǐng)注意,所有選項(xiàng)都應(yīng)用于所有指定的源文件。選項(xiàng)是由一個(gè)正斜杠 (/) 或一個(gè)短劃線 (–) 指定的。如果某個(gè)選項(xiàng)帶有參數(shù),則該選項(xiàng)的說(shuō)明指定在選項(xiàng)和參數(shù)之間是否允許有空格。選項(xiàng)名(/HELP 選項(xiàng)除外)區(qū)分大小寫。有關(guān)更多信息,請(qǐng)參閱 CL 選項(xiàng)的順序。
file 一個(gè)或多個(gè)源文件、.obj 文件或庫(kù)的名稱。CL 編譯源文件并將 .obj 文件和庫(kù)的名稱傳遞給鏈接器。有關(guān)更多信息,請(qǐng)參閱 CL 文件名語(yǔ)法。
lib 一個(gè)或多個(gè)庫(kù)名。CL 將這些名稱傳遞給鏈接器。
command-file 包含多個(gè)選項(xiàng)和文件名的文件。有關(guān)更多信息,請(qǐng)參閱 CL 命令文件。
link-opt 一個(gè)或多個(gè)鏈接器選項(xiàng)。CL 將這些選項(xiàng)傳遞給鏈接器。
您可以指定任意數(shù)目的選項(xiàng)、文件名和庫(kù)名,條件是命令行上的字符數(shù)不超過(guò) 1024,該限制是操作系統(tǒng)指定的。
CL 命令文件請(qǐng)參見(jiàn)
設(shè)置編譯器選項(xiàng) | 編譯器選項(xiàng)
命令文件是一個(gè)文本文件,它包含您另外在命令行上鍵入或使用 CL 環(huán)境變量指定的選項(xiàng)和文件名。CL 接受在 CL 環(huán)境變量中或命令行上用作參數(shù)的編譯器命令文件。與命令行或 CL 環(huán)境變量不同,命令文件允許使用多行選項(xiàng)和文件名。
命令文件中的選項(xiàng)和文件名將根據(jù) CL 環(huán)境變量中或命令行上的命令文件名的位置被進(jìn)行處理。但是,如果 /link 選項(xiàng)出現(xiàn)在命令文件中,則該行其余部分的所有選項(xiàng)將被傳遞給鏈接器。命令文件的后面幾行中的選項(xiàng)和命令行上命令文件調(diào)用之后的選項(xiàng)仍被作為編譯器選項(xiàng)接受。
命令文件一定不能包含 CL 命令。每個(gè)選項(xiàng)必須在同一行上開始和結(jié)束;不能使用反斜杠 (\) 跨行組合一個(gè)選項(xiàng)。
命令文件用一個(gè) @ 符后接一個(gè)文件名指定;該文件名可指定絕對(duì)路徑或相對(duì)路徑。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/mickey139/archive/2009/06/01/4232489.aspx