嵌入式中的强符号和弱符号是什么?

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

GNU C编译器指令__attribute__用于提供变量、函数等的属性,优化代码并提供注解。强符号和弱符号可共存,编译器根据规则选择符号。强引用和弱引用用于链接操作,弱引用可使用其他模块中定义的实体。弱符号和弱引用在库的实现中有用。

🎯

关键要点

  • __attribute__ 是GNU C的一种编译器指令,用于提供变量、函数等的属性,优化代码并提供注解。
  • 合理使用 __attribute__ 可以提高编译器的优化效果,并产生编译警告,使代码更加规范。
  • GNU C扩展了C语言,符号分为强符号和弱符号,默认情况下已初始化的全局变量为强符号,未初始化的为弱符号。
  • 强符号和弱符号可以共存,但强符号与弱符号的定义不能重复,编译器会根据规则选择符号。
  • 强引用和弱引用是编译器在链接操作中使用的概念,强引用要求符号必须有定义,弱引用则可以使用未定义的符号。
  • 弱符号和弱引用在库的实现中非常有用,允许用户自定义扩展功能的函数来覆盖弱符号函数。
  • C标准未提及强、弱符号,这是GCC特有的实现特性,MS C编译器不支持此概念。
➡️

继续阅读