在c+;中声明一个全局范围变量const+; 在C或C++中,是否可以声明具有全局范围的const,但是定义是在函数内设置的?
不,那是不可能的。声明必须与定义在同一范围内。否则,它就不是同一个名字。不,那是不可能的。声明必须与定义在同一范围内。否则,它就不是同一个名字了。像()在c+;中声明一个全局范围变量const+; 在C或C++中,是否可以声明具有全局范围的const,但是定义是在函数内设置的?,c++,c,scope,global,c++11,C++,C,Scope,Global,C++11,不,那是不可能的。声明必须与定义在同一范围内。否则,它就不是同一个名字。不,那是不可能的。声明必须与定义在同一范围内。否则,它就不是同一个名字了。像() 至少对于这一点,甚至可以保证线程安全。做类似() 至少这是线程安全的保证。为什么需要它?我在异步环境中编程,如果我没有在某个特定位置设置变量,它就会选择错误的定义。这还不是很清楚。如果你有const int x=3在全局范围内,无论何时何地引用它,它都将是3。你能举一个具体的例子来说明你所看到的问题吗?这也是为什么我需要一个常数,如果它被多次设
至少对于这一点,甚至可以保证线程安全。做类似()
至少这是线程安全的保证。为什么需要它?我在异步环境中编程,如果我没有在某个特定位置设置变量,它就会选择错误的定义。这还不是很清楚。如果你有
const int x=3
在全局范围内,无论何时何地引用它,它都将是3
。你能举一个具体的例子来说明你所看到的问题吗?这也是为什么我需要一个常数,如果它被多次设置,则会发生错误的Thynges,但它不应该被设置多次。为什么需要这样做?我在异步环境中编程,如果我没有在某个特定位置设置它,变量就会选择错误的定义。这一点还不是特别清楚。如果你有const int x=3
在全局范围内,无论何时何地引用它,它都将是3
。你能给出一个具体的例子来说明你所看到的问题吗?这也是为什么我需要一个常量,如果它被设置了不止一次,那么坏的Thynges发生了,但它不应该被设置不止一次。这将被放在全局范围内?并且在至少被调用一次之前不会被初始化?@user3353209'这将被放置在全局范围内?…'确切地这将被置于全球范围内?并且在至少被调用一次之前不会被初始化?@user3353209'这将被放置在全局范围内?…'确切地
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