打印
[LKS32 软件]

为啥编译器优化调到0就可以运行

[复制链接]
1549|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
EmmaTT|  楼主 | 2024-7-23 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一调高了就工作不正常了

使用特权

评论回复
沙发
[鑫森淼焱垚]| | 2024-7-23 23:42 | 只看该作者
因为代码不规范

使用特权

评论回复
板凳
呐咯密密| | 2024-7-24 11:41 | 只看该作者
提高优化等级,一些函数和变量会被优化,

使用特权

评论回复
地板
kkzz| | 2024-8-4 09:31 | 只看该作者
当编译器优化级别设置为0时,意味着关闭了所有的优化选项。在这种情况下,编译器会生成未经优化的代码,这通常会使编译后的程序体积更大,运行速度更慢,但更容易进行调试。

使用特权

评论回复
5
claretttt| | 2024-8-4 10:06 | 只看该作者
某些硬件或软件平台可能对编译器生成的代码有特定的要求。将优化级别设置为0可以确保生成的代码符合这些要求,从而提高兼容性。

使用特权

评论回复
6
ingramward| | 2024-8-4 10:46 | 只看该作者
当优化级别为 0 时,编译器将生成与源代码几乎完全对应的机器代码。

使用特权

评论回复
7
ccook11| | 2024-8-4 11:57 | 只看该作者
编译器优化的目的是为了生成更小、更快、更高效的目标代码。然而,优化过程可能会改变代码的执行顺序,删除看似无用的代码,甚至重新组织循环和条件语句,这些都可能导致原本存在的bug变得不明显或者产生新的问题。

使用特权

评论回复
8
pmp| | 2024-8-4 13:54 | 只看该作者
在某些情况下,开发人员可能需要了解代码在执行时的每一行是如何被处理的,以便进行性能分析或代码优化

使用特权

评论回复
9
loutin| | 2024-8-4 15:27 | 只看该作者
禁用优化通常会生成更容易阅读的汇编代码,这对于调试和理解程序流很有帮助。

使用特权

评论回复
10
houjiakai| | 2024-8-4 17:06 | 只看该作者
在开发初期或进行代码调试时,建议使用O0或O1等级,这样可以更方便地进行调试。而在产品即将发布时,为了追求更好的运行效率,可以将优化等级提高到O2或O3。

使用特权

评论回复
11
chenqianqian| | 2024-8-5 07:50 | 只看该作者
说明代码有缺陷,被优化之后反而出问题了。

使用特权

评论回复
12
plsbackup| | 2024-8-5 11:31 | 只看该作者
O0级别下,编译器不会改变源代码的逻辑结构,只是进行简单的语法和语义检查,然后生成可执行代码。因此,程序本身的逻辑正确性不受影响。

使用特权

评论回复
13
janewood| | 2024-8-5 13:19 | 只看该作者
由于O0等级不会删除未使用的变量与死代码(即编写了但没有被调用或不影响程序执行的代码),因此保留了完整的调试信息。这为开发者提供了更为丰富的信息进行问题诊断和代码调整。

使用特权

评论回复
14
belindagraham| | 2024-8-5 15:16 | 只看该作者
在未优化的代码中设置断点更加直观,因为每个源代码行通常对应于一个或几个机器指令。

使用特权

评论回复
15
jkl21| | 2024-8-5 17:10 | 只看该作者
在没有优化的情况下,生成的目标代码的结构更加清晰,更接近源代码的逻辑结构。这对于理解代码逻辑、进行教学和学习具有重要的意义。同时,这也减少了因优化导致的代码结构复杂化,进而引发的潜在问题。

使用特权

评论回复
16
bestwell| | 2024-8-5 19:02 | 只看该作者
这些级别执行不同程度的优化操作,如删除未使用的变量、内联函数、循环展开等,以提高代码的执行效率。
随着优化级别的提高,编译时间可能会增加,但执行效率也会相应提高。

使用特权

评论回复
17
tabmone| | 2024-8-5 20:49 | 只看该作者
优化级别为0的代码更容易调试,因为它们更接近源代码。这使得程序员能够更容易地找到和修复问题。

使用特权

评论回复
18
ccook11| | 2024-8-5 22:36 | 只看该作者
编译器不执行任何优化。
它主要用于调试目的,因为在此级别下,编译器会尽量保持源代码的原始结构,使得调试信息更加准确。
O0级别下的编译时间通常是最短的。

使用特权

评论回复
19
zerorobert| | 2024-8-6 09:59 | 只看该作者
优化主要是为了提高代码的执行效率,如减少运行时间、降低内存占用等。但即使没有这些优化,代码依然可以按照预期的逻辑执行。

使用特权

评论回复
20
timfordlare| | 2024-8-6 12:00 | 只看该作者
虽然O0级别不执行任何优化,但这并不意味着生成的代码无法运行。它只是可能比其他优化级别生成的代码执行效率更低。然而,在调试阶段,执行效率通常不是首要考虑的因素。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

412

帖子

0

粉丝