根据msdn,
/ O2(最大化速度)
相当于
/和/爱/ OT / Oy公司/ OB2 / GS / GF /戈瑞
并再次根据msdn,以下pragma
#pragma optimize(“[optimization-list]”,{on | off})
在“优化列表”中使用与/ O编译器选项相同的字母。 pragma的可用字母是:
我应该使用哪些与/ O2具有相同的含义?
The Microsoft Docs article /O1, /O2 (Minimize Size, Maximize Speed)为Visual Studio 2017说:
/ O1和/ O2编译器选项是一次设置多个特定优化选项的快速方法。 / O1选项设置在大多数情况下创建最小代码的各个优化选项。 / O2选项设置在大多数情况下创建最快代码的选项。 / O2选项是发布版本的默认选项。此表显示由/ O1和/ O2设置的特定选项:
Option Equivalent to /O1 (Minimize Size) /Og /Os /Oy /Ob2 /GF /Gy /O2 (Maximize Speed) /Og /Oi /Ot /Oy /Ob2 /GF /Gy
From the Microsoft Docs article /O Options (Optimize Code):
/Og
实现全局优化/Oi
为适当的函数调用生成内部函数。/Ot
(默认设置)告诉编译器优先考虑速度优化而不是优化大小。/Oy
禁止在调用堆栈上创建帧指针,以便更快地调用函数。/Ob2
扩展标记为inline
或__inline
的函数以及编译器选择的任何其他函数/ G选项是:
/GF
(消除重复字符串)/Gy
(启用功能级链接)/G
选项不是严格优化的,因此我们留下/Og
和/Ot
,加上#pragma intrinsic
(列表中的第2项),#pragma auto_inline
(列表中的第5项)和可能的#pragma inline_depth
。见Microsoft Docs article Optimization Pragmas and Keywords
另见Microsoft Docs article /Ox (Enable Most Speed Optimizations),表明/Ox
选项类似于/O2
选项,除了它没有打开/GF
和/Gy
。另见What is the difference between the /Ox and /O2 compiler options?
The Microsoft Docs article Compiler options listed by category有一个编译器选项列表,其中包含它们的含义链接。
我不认为有直接的等价物。
#thing升级(“hi”,no)
应取消一个文件,大多数是/ O2在项目级别的效果,但是
#thing thing(“是的”,是的)
只是说“使用编译器开关”,所以你需要/ O2或/ Og / Ot / Oy。
我找不到/ G部分的编译指示,他们做'优化'就像'事情。