打印

关于weak函数无法被库函数重载的问题

[复制链接]
314|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
喷水壶|  楼主 | 2018-7-27 08:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
描述
在Keil中,如果在 lib01.a 中定义了 WEAK foo(),而在 lib02.a 中定义了 foo(),最后链接成 axf 文件的时候,会使用 lib01.a 中的 weak 定义。

为什么会遇到这个问题
我想将驱动封装成库,比如 Systick_IRQHandler Strong定义也放在这里面,发现最后执行的是 startup.s 中的 Systick_IRQHandler ,一旦执行 Delay 就跑不下去了。


解决办法
参考Keil HELP关于WEAK的说明,将 Strong foo() 放到直接生成 axf 文件的工程(有啥学名没有)中。

The Future
有没有更好的办法,我实在不想在用户应用中看到驱动源码。

使用特权

评论回复

相关帖子

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

本版积分规则

433

主题

437

帖子

0

粉丝