【问题标题】:Should I always give my global functions internal linkage?我应该总是给我的全局函数内部链接吗?
【发布时间】:2014-11-25 16:22:29
【问题描述】:

我有一个 TU,其全局功能不会被任何其他 TU 使用。我读到将它们声明为static 会为它们提供内部链接,从优化的角度来看这很好。但我想知道我应该在什么情况下使用它们。当我知道全局函数/变量不会在程序中的其他任何地方使用时,我是否应该总是提供全局函数/变量内部链接?

【问题讨论】:

  • "从优化的角度来看这很好"不。
  • 您在此处选择的操作可能会影响编译时间,但在运行时它将是透明的。
  • @Cheersandhth.-Alf 对编译器优化没有帮助?
  • 如果它们不是 static 并且不在未命名的命名空间中,那么您可能会与另一个执行相同操作的 TU 发生名称冲突,这将默默地导致未定义的行为。

标签: c++ linkage


【解决方案1】:

改为将它们放在unnamed namespace 中。

这是 C++ 中的 idiomatic solution,用于仅在当前 TU 中使用的函数。

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2018-08-28
    • 1970-01-01
    • 2012-01-10
    • 2011-01-24
    • 2010-11-05
    • 2019-07-20
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多