2014-03-30 52 views
0

在C或C++中,是否可以用全局作用域声明一个常量,但是定义是在函数内部设置的?声明一个全局作用域变量const在C++中

+0

为什么你需要这个? –

+0

我在异步环境中进行编程,如果我没有将它设置在一个特定的位置,变量会提取错误的定义。 – user3353209

+0

这并不特别清楚。如果在全局范围内有'const int x = 3;',无论何时/无论何时引用它,它都将是'3'。你能举一个你看到的问题的具体例子吗? –

回答

4

约做这样的事情(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 

至少在这甚至保证是线程安全的。

+0

这将被放置在全局范围内?并且在被调用至少一次之前不会被初始化? – user3353209

+0

@ user3353209 _'这将被放置在全球范围内? ......确实! –

+0

@ user3353209请检查我的编辑内容... –

1

不,这是不可能的。声明必须与定义处于相同的范围。否则,它不是同一个名字。