__attribute__((weak))的应用

来源:互联网 发布:matlab 初始化3维矩阵 编辑:程序博客网 时间:2024/06/06 00:28

最近在开发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。

0 0
原创粉丝点击