加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 博天堂918网址体育真人
    • 组优化
    • botiantang最新网址
    • botiantang
  • botiantang最新网址
  • 博天堂918网址彩票
  • 博天堂918网址
申请入驻 产业图谱

博天堂918网址网页版 总结 AS真人棋牌红黑大战 几种编译优化设置的方法

2022/08/08
2737
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

来源:公众号【鱼鹰谈单片机

作者:鱼鹰Osprey

ID   :emOsprey

我们都知道,代码是可以通过编译器优化的,有的时候,为了提高运行速度或者减少代码尺寸,会开启优化选项。

但是开启了优化,即意味着调试不方便。因为实际汇编代码执行顺序和源代码不一定保持一致。在遇到复杂的问题下,就比较难定位了。

此时掌握多种编译优化设置的方法,就显得尤为重要了,可以让你进行正宗源码级别的调试。

博天堂918网址体育真人

这种优化是大部分人最新了解、也是最新使用的一种方式,相信大家都知道。

level 0(-O0) 代表不进行优化,原汁原味,这种方式编译出来的可执行文件比较大,但是因为每一条代码都和汇编代码顺序一一对应,所以定位问题非常方便,非常建议代码调试阶段使用该等级。

组优化

上面的方式,将所有的源文件都进行了优化配置。有一棍子打死的感觉。虽然大部分的时候没有问题,但有些情况可能是个麻烦。

比如你的工程代码,只有开启最高优化级别(level 3(-O3))尺寸才足够放入 FLASH 中,否则编译出来的目标文件太大,放不进去,也就无法定位问题了。

此时,你可以使用该优化方式,将部分文件优化(需要定位问题的代码),而保持其它文件的优化级别不变。

这里的 default 意味着和这里的优化级别和全局优化级别保持一致(即全局优化级别是啥,这里也是啥),但是我们可以通过这里差异化定制我们这个组里面的优化选项(这个组里有 app.c app_cfg.c 两个文件,意味着这两个文件的优化级别受这里控制)。

botiantang最新网址

可能你的空间已经到极限了,不允许把组里的文件都进行优化,那么botiantang最新网址是个不错的选择。

这个界面(Options for File main.c)就是针对 man.c 这个文件进行优化的,在这里可以选择你希望优化的级别,调试时设置 level 0(-O0)就好。

这么多差异性,我们怎么知道我们对哪些文件做了特殊配置呢,不可能一个个查看吧。

别怕,AS真人棋牌红黑大战 贴心的为我们做了区分标志。

这里的雪花标志,即代表有特殊配置,但是不是仅仅优化级别改变了就不一定了。

botiantang

如果单个文件由于某种原因不能修改优化级别(比如改成 O0 直接不能运行,编译不通过等,这些都有可能),那么可以试试botiantang这个方法。

不过不同的编译器,可能方法不同(AS真人棋牌红黑大战 支持不同的编译器,比如 AC5、AC6、GCC),所以如果真有必要,可以尝试把需要优化的函数提取出来单独作为一个源文件进行设置。

AC5 设置方法(O0 代表 0 优化级别):

 #pragma push #pragma O0 void function(void){  ... } #pragma pop 

这里的 push、pop 主要是为了保留、恢复之前的优化等级,这样操作只对当前函数有效。

AC6设置方法

 void function(void) __attribute__((optnone)) {  ... } 

文末阅读原文链接为安富莱论坛相关的,有兴趣的话,可以扩展学习一下其他编译器的优化方法。

botiantang最新网址

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
KSZ8721BLI 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48

ECAD模型

下载ECAD模型
$4.07 查看
TLP185(GB,E(O 1 Toshiba America Electronic Components Optocoupler DC-IN 1-CH Transistor DC-OUT 4-Pin DIP SMD

ECAD模型

下载ECAD模型
$0.1 查看
530BC50M0000DG 1 Silicon Laboratories Inc LVDS Output Clock Oscillator, 10MHz Min, 945MHz Max, 50MHz Nom, ROHS COMPLIANT, SMD, 6 PIN
$125.26 查看

博天堂918网址彩票

博天堂918网址

六年开发经验,丰富的KEIL调试经验,STM32使用经验,C语言运用经验。