"这篇文章详细介绍了Microsoft Visual C++ (VC++) 编译器cl.exe的全部命令开关,旨在帮助开发者深入理解和充分利用cl.exe的功能。" 在编程过程中,掌握编译器的命令行选项是非常重要的,尤其是对于大型项目或者自动化构建过程。cl.exe作为VC++的主要编译工具,提供了丰富的命令开关来控制编译过程中的各种行为。以下是一些主要的命令开关及其作用: 1. `/C`:只进行编译,不进行链接。这使得你可以分别处理编译和链接步骤,适用于多文件项目。 2. `/D`:定义预处理器宏,等同于`#define`,可以在编译时设置变量或条件。 3. `/E`:预处理到标准输出,用于查看预处理器处理后的源代码,但不进行编译。 4. `/EH`:处理异常处理模型,如`/EHsc`表示启用标准C++异常处理。 5. `/EP`:与/E相同,但不保留`#line`指令。 6. `/F`系列:控制输出文件的大小和位置,例如`/Fa`指定汇编代码输出目录,`/Fo`指定目标对象文件的输出目录。 7. `/FD`和`/Fd`:分别用于指定库和调试信息的输出路径,`/Fd`通常用于指定PDB文件的位置。 8. `/Fe`:指定可执行文件的输出路径。 9. `/FI`:强制包含指定的头文件,相当于在每个源文件中添加`#include`指令。 10. `/FM`:生成映射文件,列出链接器如何组合对象文件。 11. `/Fo`:设置输出的.obj文件路径。 12. `/Fp`:指定预编译头文件的路径。 13. `/FR`和`/Fr`:用于生成编译器的详细信息,主要用于调试和分析。 14. `/G`系列:控制处理器和代码优化,例如`/G3`至`/G6`分别针对不同的处理器优化代码,`/GA`优化Windows本机代码,`/GF`和`/Gf`优化字符串处理。 15. `/GR`和`/Gr`:开启或关闭运行时类型信息(RTTI),`/GX`则控制异常处理策略。 16. `/Gy`:启用函数级别的链接,允许单独链接函数,减少生成的可执行文件大小。 17. `/GZ`和`/Gz`:控制栈溢出检查,`/GZ`在Debug模式下默认开启,在Release模式下关闭,`/Gz`则指定使用`__stdcall`调用约定。 18. `/H`:限制每个文件的最大包含层次,防止无限递归。 19. `/I`:添加包含文件的搜索路径。 20. `/J`:使`char`类型默认为无符号。 21. `/LD`, `/LDd`, `/ML`, `/MLd`, `/MT`, 和`/MTd`:选择运行时库类型,包括静态和动态链接,以及是否是Debug版本。 22. `/nologo`:抑制显示编译器的版权信息。 23. `/O`系列:控制优化级别,`/O1`和`/O2`分别为最小化大小和最大化速度,`/Oi`则尝试内联函数,`/Od`禁用优化。 24. `/Op`:优化浮点运算,以提高性能。 这只是cl.exe众多命令开关的一部分,实际使用中应根据项目需求选择合适的参数组合,以达到最佳的编译效果和效率。熟练掌握这些命令开关将极大地提升开发效率,并有助于调试和优化代码。
/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
下载后可阅读完整内容,剩余4页未读,立即下载
- 粉丝: 0
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦