VS常见编译选项总结

本文详细解析了Visual Studio 2015的编译选项,包括/nologo、/arch、/c、/WX、/GS-等,涉及编译过程中的警告处理、代码优化、预处理定义等多个方面。这些选项对于理解和提升代码质量至关重要,适用于C/C++开发者深入理解编译过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VS常见编译选项总结

UEFI工程中的tools_def.txt就设置了不同版本VS编译器的C默认全局编译选项,以2015为例,分Debug/Release/NOOPT三种进行描述:

DEBUG_VS2015_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
RELEASE_VS2015_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
NOOPT_VS2015_IA32_CC_FLAGS        = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od

这些编译选项在各大工程中经常会遇到,但其具体代表什么意思呢?
下面one by one的解释/总结下:

OptionPurpose
/nologo编译的过程中不显示编译器版本信息
/arch指定编译产生何种架构的汇编指令,X64 or IA32 or ARM
/c在编译过程中只会产生.obj文件,不会隐性的链接库文件;如果要链接,需要显性使用/LINK
/WX将编译过程产生的所有警告均视为错误
/GS-不去做Buffer Security Check/堆栈安全性检查
W4编译过程中会打印level4/最高级别的waring message
/Gs[size]针对c function加入size大小的堆栈探针,以应对局部变量所需空间的不足
/D编译进预处理的符号,类似工程的宏
/O1b2=/O1 /Ob2 优化选项,采用最小空间代码编译以及展开内嵌函数
/GL使能代码整体优化
/FI[ ]pathname强制包含pathname下的头文件
/EHs-c-不会忽略structured和C++异常
GR-禁止runtime类型的object types检查
/GF将相同的string放在同一块mem地址上
/Gy允许编译器打包function
/Z7编译生成的.obj包含所有的debug symbols
/Gw允许编译器打包global data

其他的编译选项可在微软的Compiler Options中查询:
在这里插入图片描述每一种编译选项所造成的具体差异,还有待在工程实践中逐一探索,thks!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cerman

你的鼓励是探索和创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值