【问题标题】:Static Symbol Weak or Strong静态符号弱或强
【发布时间】:2014-01-03 07:21:35
【问题描述】:

静态未初始化符号是弱符号还是强符号?

可以用强符号覆盖未初始化的静态符号吗?

模块 1:

static int y;

模块 2:

double y = 10;

【问题讨论】:

  • gcc 有很好的前缀来处理弱符号。
  • C++ 没有“模块”——除非在过去十年左右发生了变化,否则 C 也没有。你的意思是翻译单元吗——通常是一个 .c 或 .cc/.cpp/。 c++文件和它直接或间接的文件#includes?
  • 是的,我指的是链接时的翻译单元。

标签: c++ c linker symbols


【解决方案1】:

没有。静态符号是定义模块的本地符号 - 不是全局的,并且不能被任何其他模块覆盖。

【讨论】:

  • 模块 1 中的 'static' 对其他模块隐藏了本地“y”。所以我不会收到链接错误?请告诉我,因为我在网上找不到它?
  • 没错。我不明白你为什么在网上找不到它 - 有 大量 参考资料告诉你 static 做了什么。
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多