__attribute__((weak))的应用

最近在开发STM32F407项目发现工程中有__weak函数说明,下面解释一下怎么应用

 #if  defined ( __GNUC__ )

 #ifndef __weak
#define __weak   __attribute__((weak))
 #endif /* __weak */
 #ifndef __packed
#define __packed __attribute__((__packed__))
 #endif /* __packed */
#endif /* __GNUC__ */

用于函数声明,__weak声明于函数时,在工程中可以没有函数实体,当函数中有实体函数时(没有带__weak)在函数调用的时候只调用没有带__weak的函数,如下:

int func(void)

{

         Func_t();

}


__weak void Func_t(void)

{

}

其实这样做的原因是为了使软件框架更加利于扩展和兼容;同时也满足没有实体函数而报编译错误,如果在上述的结构中要求在Func_t函数中实现加法运算,函数只要做如下修改:

void Func_t(void)

{

   c=a+b;// 假设a,b,c都是全局变量;

}

PS:注意函数头没有带__weak。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值