gpt4 book ai didi

c++ - 内联命名空间变量是否具有内部链接?如果不是,为什么下面的代码有效?

转载 作者:可可西里 更新时间:2023-11-01 17:57:29 27 4
gpt4 key购买 nike

这个问题与this one直接相关.考虑代码:

#include <iostream>

inline namespace N1
{
int x = 42;
}
int x = 10;

int main()
{
extern int x;
std::cout << x; // displays 10
}

它显示 10。如果我删除 extern int x; 声明,那么我们会得到一个歧义编译器时间错误

error: reference to 'x' is ambiguous

问题:为什么代码与 extern int x 声明一起工作,为什么当我删除它时它停止工作?是因为内联命名空间变量有内部链接吗?

最佳答案

没有。 [basic.link] 中没有规定会导致 x 具有内部链接。具体来说,“所有其他命名空间都有外部链接。”,“其他”是指“未命名”。也许您在考虑未命名的命名空间

关于c++ - 内联命名空间变量是否具有内部链接?如果不是,为什么下面的代码有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com