[应用相关] 如何确保某一段程序不被优化掉

[复制链接]
3764|38
ccook11 发表于 2024-3-12 17:20 | 显示全部楼层
在Keil项目的Options for Target -> C/C++标签页中,可以设置优化等级。选择等级较低的优化或不进行优化可以减少优化导致代码段消失的可能性。
pixhw 发表于 2024-3-15 13:59 | 显示全部楼层
在某些情况下,可以使用宏定义来避免代码被优化。例如,定义一个宏来代替某个小函数,这样即使函数没有被调用,宏也可能因为其他地方的使用而被保留。
ulystronglll 发表于 2024-3-15 17:08 | 显示全部楼层
在GCC和一些其他编译器中,可以使用__attribute__((used))属性来防止未使用的函数被优化掉。
hudi008 发表于 2024-3-15 21:52 | 显示全部楼层
内联函数往往会被编译器优化,如果你希望保留代码的原样,应该避免使用内联函数。
elsaflower 发表于 2024-3-16 13:43 | 显示全部楼层
没有任何外部因素影响循环的执行
vivilyly 发表于 2024-3-17 09:40 | 显示全部楼层
如果担心某个函数会被内联优化,可以使用__declspec(noinline)(针对Microsoft编译器)或__attribute__((noinline))(针对GCC编译器)阻止编译器内联该函数。
everyrobin 发表于 2024-3-17 13:45 | 显示全部楼层
在Keil中使用C语言编写代码时,可以通过添加关键字volatile来防止编译器优化掉某一段代码。
jackcat 发表于 2024-3-17 16:54 | 显示全部楼层
使用__attribute__((optimize(0))): 你还可以使用C语言的__attribute__宏来指定编译器的优化级别。
bestwell 发表于 2024-3-18 00:50 | 显示全部楼层
在需要避免优化的代码段前和后分别添加__asm关键字。这个关键字可以告诉编译器在这段代码中不要进行优化。
小夏天的大西瓜 发表于 2024-3-18 17:51 | 显示全部楼层
使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM.
LinkMe 发表于 2024-3-20 12:15 | 显示全部楼层
Volatile只适用于变量优化
芯路例程 发表于 2024-3-20 14:57 | 显示全部楼层
Inline functions are often optimized by compilers, so if you want to keep the code as it is, you should avoid using inline functions。
zerorobert 发表于 2024-3-23 13:39 | 显示全部楼层
过度禁止优化可能会降低程序整体的运行效率,所以在确保关键代码不被优化的同时,应尽量保持整体优化策略的合理性。
cashrwood 发表于 2024-3-23 20:51 | 显示全部楼层
可以使用#pragma optimize指令来控制编译器的优化等级。
elsaflower 发表于 2024-3-24 12:54 | 显示全部楼层
过度禁用优化可能会增加代码的大小和执行时间,所以应该谨慎使用这些策略,并确保它们不会对你的应用程序产生负面影响。
bestwell 发表于 2024-3-24 16:38 | 显示全部楼层
可以通过在代码中添加特定的编译器指令来实现。
szt1993 发表于 2024-3-25 10:55 | 显示全部楼层
这个是不是跟软件版本的选择有关系?
AIsignel 发表于 2024-3-28 11:54 | 显示全部楼层
While compiler optimizations can improve program performance, in some cases you may need to keep your code in its original form for easier understanding and debugging。
初级工程渣 发表于 2024-8-31 21:03 | 显示全部楼层
设置正确的串口参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部