Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+;中声明一个全局范围变量const+; 在C或C++中,是否可以声明具有全局范围的const,但是定义是在函数内设置的?_C++_C_Scope_Global_C++11 - Fatal编程技术网

在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