请教一下,keil5如何让函数不被优化
今天一个问题被困了好久,USART.C文件中有个函数中有几个for循环,用的KEIL5,开启的O1优化。这几个for语句一直被优化,debug模式下无法打断点。如果不开启优化,代码量会超限。这个怎么让这个函数不被优化啊使用编译预处理指令#pragma O0关闭局部优化试试:
#pragma push
#pragma O0
函数...
#pragma pop 我也遇到这个问题,只能给这个文件单独设置优化等级解决。不知道有没有其他好办法 我也是,网上参考了好多,都没用, 单独给单个文件设置优化等级吧 可以使用__attribute__((optimize("O0")))属性来指定编译器在编译该函数时不进行优化。 使用-O0(无优化)或-O1(有限优化)可以减少对代码的更改。 禁用优化可能会影响代码的性能和大小,因此应该只在确实需要的情况下使用。 可以通过调整优化级别来减少优化的可能性。 使用无优化或有限优化可以帮助你更容易地设置断点和跟踪代码执行。但在发布产品时,通常需要使用更高的优化级别以提高性能。 过度优化可能会导致代码质量下降,包括增加代码大小、降低可读性、引入潜在的错误等。因此,在调整优化级别时需要权衡这些因素。 在Keil5中,如果你想防止某个函数被编译器优化,可以使用#pragma指令或者__attribute__关键字来告诉编译器不要优化特定的函数。 将优化级别设置为 “O0” 禁用函数优化 jackcat 发表于 2024-12-10 13:26
可以使用__attribute__((optimize("O0")))属性来指定编译器在编译该函数时不进行优化。 ...
这个试过了,没效果 51xlf 发表于 2024-12-13 22:37
将优化级别设置为 “O0”
不行,用0就会导致代码量过大。FLASH不够 楼主解决了吗,我也遇到这个问题 我也是,试了网上很多种方法都不行,最后还是单独文件不优化
页:
[1]