首页 > 常识 >

weak的意思是什么(C语言小知识点 弱符号weak)

100次浏览     发布时间:2024-07-11 06:45:14    

在看LiteOS源代码的时候,遇到WAEK关键字,如下示例:

kernel\base\los_lockdep.c:

WEAK VOID OsLockDepPanic(enum LockDepErrType errType)
{
    /* halt here */
    (VOID)errType;
    (VOID)LOS_IntLock();
    OsBackTrace();
    while (1) {}
}

这个宏定义出处在kernel\include\los_toolchain.h文件:

#ifndef WEAK
#define WEAK                                        __attribute__((weak))
#endif

在C语言中,有符号有强弱的说法。符号指的是函数、变量的名字。强、弱符号就是针对全局函数和变量,下文称为全局符号来说的。

  1. 若多个全局符号一样,把其中之一声明为weak属性,则不会引发重定义错误。
  2. 链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用。
  3. 但当普通的全局符号不可用时,链接器会使用弱符号。
  4. 当有函数或变量名可能被用户覆盖时,该函数或变量名可以声明为一个弱符号。


网站内容来自网络,如有侵权请联系我们,立即删除!
Copyright © 怪百科 鲁ICP备2024098652号-1