【问题标题】:Declare a global scope variable const in c++在 C++ 中声明一个全局范围变量 const
【发布时间】:2014-05-10 00:44:10
【问题描述】:

在 C 或 C++ 中,是否可以声明具有全局范围的 const,但定义是在函数内部设置的?

【问题讨论】:

  • 你为什么需要这个?
  • 我在异步环境中编程,如果我没有在某个特定位置设置它,变量会选择错误的定义。
  • 这不是特别清楚。如果您在全球范围内拥有const int x = 3;,那么无论您在何时/何地引用它,它都会是3。你能举一个你看到的问题的具体例子吗?
  • 这也是我需要一个 const 的原因,如果它被设置不止一次 Bad Thynges 发生
  • 但它不应该被设置超过一次。

标签: c++ c scope global


【解决方案1】:

像 (live sample) 这样的事情怎么样

const int& MyConstValue(int x) {
    static const int myConstValue = x;
    return myConstValue;
}

int main() {
    std::cout << MyConstValue(5) << std::endl; // This is the 1st call and "wins"
    std::cout << MyConstValue(8) << std::endl;

    return 0;
}

输出是

5
5

至少对于,这甚至可以保证是线程安全的。

【讨论】:

  • 这会放在全局范围内吗?并且在至少被调用一次之前不会被初始化?
  • @user3353209 '这会放在全局范围内吗? ...' 没错!
【解决方案2】:

不,那是不可能的。声明必须与定义在同一范围内。否则就不是同名了。

【讨论】:

    猜你喜欢
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多