Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.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++ 如何解决内联命名空间中的标识符冲突导致的不明确引用_C++ - Fatal编程技术网

C++ 如何解决内联命名空间中的标识符冲突导致的不明确引用

C++ 如何解决内联命名空间中的标识符冲突导致的不明确引用,c++,C++,考虑以下代码: #include <iostream> inline namespace N1 { int x = 2; } int x = 1; int main() { std::cout << N1::x; std::cout << x; return 0; } #包括 内联命名空间N1 { int x=2; } int x=1; int main() { std::cout内联命名空间作用域变量具有静态(内部链接

考虑以下代码:

#include <iostream>

inline namespace N1
{
    int x = 2;
}

int x = 1;

int main()
{
    std::cout << N1::x;
    std::cout << x;
    return 0;
}
#包括
内联命名空间N1
{
int x=2;
}
int x=1;
int main()
{
std::cout内联命名空间作用域变量具有静态(内部链接)

extern int x;
就在显示
x之前
将为您执行此操作 . 这样,
N1::x
在名称查找期间就不会被考虑,因为它具有静态存储持续时间和内部链接


现在还不完全清楚代码为什么起作用,所以我接着问了一个问题。

不要在全局名称空间中声明第二个
x
。@KerrekSB我编辑了这个问题。当然我可以这样做,但我想知道是否还有其他解决方案。这看起来像是“医生受伤了”这种情况。我意识到,尽管我提出的解决方案可行,但解释可能并不完全正确。换句话说,我没有发现任何东西指定内联命名空间变量具有静态存储持续时间。后续: