弱符号是在可执行文件和可链接格式(ELF)目标文件链接期间特殊注释的符号。默认情况下,没有任何注释的目标文件中的符号都是强符号。在链接期间,强符号可以覆盖同名的弱符号。相比之下,共享名称的两个强符号在链接时间会产生链接错误。在链接二进制可执行文件时,一个弱声明的符号不需要定义。相比之下,(默认情况下)已声明的强符号而没有定义会触发未定义符号链接错误。C或C++语言标准没有提到弱符号;因此,在代码中插入它们并不是很可移植。即使两个平台支持相同或类似的标记符号为弱符号的语法,其语义也可能有微妙的差异,例如运行时动态链接期间的弱符号是否失去其语义。
什么是弱函数及其用途?我正在使用stm32f429微控制器。库中存在一些弱函数。但是我无法理解它们及其用途!
我在谷歌上搜索了它,但没有得到令人满意的答案。