what?
_weak函数是为了防止代码里面重复定义了同样函数名的函数,编译器在链接的时候会报错的一种手段。
why?
_weak 一般被用在公共的接口上,比如中断入口函数,假如在isr.c 定义了一个叫_weak xxx_IRQHandler的弱函数,当我在xxx,c中重新定义了一个xxx_IRQHandler(强符号)的时候,编译器就会直接执行xxx.c文件里的函数了,反之执行Isr.c里的弱函数。注意:弱函数被使用在不同的.c文件中才有意义
how?
在一个函数名前面加_weak ,c99并没有__weak关键字。此关键字是编译器外扩的。所以不同的编译器可能不一样。比如gcc编译链中并没有这个关键字。而是使用__attribute__((weak))代替。为了方便移植,我们可以宏定义,如下:
#ifndef __weak #define __weak __attribute__((weak)) #endif
参考:(173条消息) _weak 弱函数_Yank_k的博客-CSDN博客_weak弱函数
标签:__,函数,xxx,weak,关键字,编译器,使用 From: https://www.cnblogs.com/lzqd/p/17055373.html