【问题标题】:using static data members in inline functions在内联函数中使用静态数据成员
【发布时间】:2014-01-18 08:22:13
【问题描述】:

我阅读了以下不同的来源,

  1. 所有静态数据成员都在 main() 之前初始化(即使 main() 和静态数据成员存在于不同的翻译单元中)。 – 同意
  2. 内联函数在调用它们的每个源文件或翻译单元中都有重复。 - 同意

明确说明静态数据成员是在main()之前初始化然后,

  1. 如果内联函数访问静态成员,会出现什么问题?
  2. 为什么将静态数据成员与内联函数一起使用是不安全的?

请用一些清晰的例子来解释。

【问题讨论】:

  • “使用内联函数的静态数据成员是不安全的”它来自哪里?你引用谁?
  • 静态函数变量声明仅在第一次通过函数(第一次调用)时被初始化(即构造)。如果函数是内联的......好吧......我仍然不明白为什么会有问题。
  • 另外,为什么一直拒绝让人们更好地格式化这个问题!?
  • @StoryTeller 函数是否内联无关紧要(参见 as-if 规则)。是否内联是因为内联函数可能定义在多个翻译单元中。
  • 谁说它不安全?他们有没有详细说明为什么它可能不是? (当然,在main 开始之前或结束之后之前从不同的翻译单元访问静态数据是不安全的,但这与内联函数无关。)

标签: c++ static inline


【解决方案1】:

使用静态成员和内联方法没有问题。

你可以在这里找到一些关于静态+内联的类似讨论:static variables in an inlined function

就算讲的是静态变量,机制也是类似的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多