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

2019-07-20 16:14发布

描述
在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
有没有更好的办法,我实在不想在用户应用中看到驱动源码。
0条回答

一周热门 更多>