打印
[FAQ]

请教一下,keil5如何让函数不被优化

[复制链接]
530|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问天少年|  楼主 | 2024-11-12 21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天一个问题被困了好久,USART.C文件中有个函数中有几个for循环,用的KEIL5,开启的O1优化。这几个for语句一直被优化,debug模式下无法打断点。如果不开启优化,代码量会超限。这个怎么让这个函数不被优化啊

使用特权

评论回复
沙发
zhoupxa| | 2024-11-12 23:23 | 只看该作者
使用编译预处理指令#pragma O0关闭局部优化试试:

#pragma push
#pragma O0
函数...
#pragma pop

使用特权

评论回复
板凳
我喜欢打游戏| | 2024-11-13 20:36 | 只看该作者
我也遇到这个问题,只能给这个文件单独设置优化等级解决。不知道有没有其他好办法

使用特权

评论回复
地板
micoccd| | 2024-11-16 18:56 | 只看该作者
我也是,网上参考了好多,都没用,

使用特权

评论回复
5
我想看大海| | 2024-11-20 20:33 | 只看该作者
单独给单个文件设置优化等级吧

使用特权

评论回复
6
jackcat| | 2024-12-10 13:26 | 只看该作者
可以使用__attribute__((optimize("O0")))属性来指定编译器在编译该函数时不进行优化。

使用特权

评论回复
7
biechedan| | 2024-12-10 14:59 | 只看该作者
使用-O0(无优化)或-O1(有限优化)可以减少对代码的更改。

使用特权

评论回复
8
lzbf| | 2024-12-10 20:26 | 只看该作者
禁用优化可能会影响代码的性能和大小,因此应该只在确实需要的情况下使用。

使用特权

评论回复
9
benjaminka| | 2024-12-11 21:51 | 只看该作者
可以通过调整优化级别来减少优化的可能性。

使用特权

评论回复
10
10299823| | 2024-12-12 22:12 | 只看该作者
使用无优化或有限优化可以帮助你更容易地设置断点和跟踪代码执行。但在发布产品时,通常需要使用更高的优化级别以提高性能。

使用特权

评论回复
11
febgxu| | 2024-12-13 20:43 | 只看该作者
过度优化可能会导致代码质量下降,包括增加代码大小、降低可读性、引入潜在的错误等。因此,在调整优化级别时需要权衡这些因素。

使用特权

评论回复
12
yeates333| | 2024-12-13 21:08 | 只看该作者
在Keil5中,如果你想防止某个函数被编译器优化,可以使用#pragma指令或者__attribute__关键字来告诉编译器不要优化特定的函数。

使用特权

评论回复
13
51xlf| | 2024-12-13 22:37 | 只看该作者
将优化级别设置为 “O0”              

使用特权

评论回复
14
hearstnorman323| | 2024-12-14 13:28 | 只看该作者
禁用函数优化              

使用特权

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

本版积分规则

78

主题

548

帖子

1

粉丝