C语言小知识点 弱符号(weak)

C语言小知识点 弱符号(weak)在看 LiteOS 源代码的时候 遇到 WAEK 关键字 如下示例 kernel base los lockdep

大家好,欢迎来到IT知识分享网。

在看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. 当有函数或变量名可能被用户覆盖时,该函数或变量名可以声明为一个弱符号。
C语言小知识点 弱符号(weak)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/177115.html

(0)
上一篇 2025-04-25 10:00
下一篇 2025-04-25 10:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信