1、weak弱函数

weak 函数用于定义变量或者函数。弱函数一般用于多个模块间的交互接口

int __attribute__((weak)) test_lib_a(int a, int b)
{
printf("weak %s\n", __FUNCTION__);
return a + b;
}

2、注意事项

1、weak属性只会在静态库(.o .a )中生效,动态库(.so)中不会生效

2、weak 只对链接器生效,即链接器在允许两个同名符号表(一个强符号、一个或多个弱符号),编译器不允许在同一个文件中存在两个同名的符号。

3、链接器优先链接定义为非weak的函数或变量,如果找不到再连链接weak函数或者变量,若都没有,静态链接则编译时报错,若动态链接时则系统无法启动

4、对于动态库,weak属性毫无作用,调用哪个符号,取决于库链接顺序。

5、weak 在C99中没有,属于编译器外扩的,gcc中使用的是__attribute__((weak)

6、库链接顺序:从左到右,越基础的越靠右。(即在左边找到了需要符号,则会用靠近左边库中的符号)

参考:

https://www.valvers.com/open-software/gcc/weak-function-attributes/

https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html

https://www.cnblogs.com/linhaostudy/p/9237357.html

https://zhuanlan.zhihu.com/p/369345831

最新文章

  1. VIM教程
  2. 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)
  3. 关于欧几里得算法求最大公约数,即OJ1029的参考解法
  4. EF 只更新部分字段
  5. Android之adb
  6. Colors
  7. web优化(一)
  8. linux 查看ip地址
  9. 关闭或启动linux防火墙后,docker启动容器报错
  10. postgresql开启网络连接
  11. vue特殊属性 key ref slot
  12. SUID、SGID、粘滞位
  13. IC 设计中DFT的Boundary Scan功能
  14. IDEA安装使用 VisualVM 及VisualVM 远程监视
  15. open-falcon之query
  16. POJ3208魔鬼数
  17. 读书笔记_Effective_C++_条款三十三:避免遮掩继承而来的名称
  18. 【软引用】弱引用 图片的加载与缓存 OOM
  19. poj3680
  20. Q239 滑动窗口最大值

热门文章

  1. 郁金香逆向 2.便利怪物对象数组 纯C写法
  2. CCRD_TOC_2015_EULAR专刊第二辑
  3. 代码随想录算法训练营day01 | leetcode 704/27
  4. GPIO 和轮询控制 LED 的状态
  5. 从NLP视角看电视剧《狂飙》,会有什么发现?
  6. 【C++复习】运算符优先级(简)
  7. python3.9不支持win7
  8. 在Linux中实现打印目录程序遇到问题及解决
  9. c++获取类型信息
  10. 2022-05-16内部群每日三题-清辉PMP