gpt4 book ai didi

c++ - 限定名称和使用声明的 clang 错误消息

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:37 24 4
gpt4 key购买 nike

考虑以下代码。

namespace A::B::C::D::E {
struct X { };
}

namespace B {
using namespace A::B::C::D::E;
// or, using A::B::C::D::E::X;
// or, using X = A::B::C::D::E::X;
}

假设我以某种方式错误地使用了 B::X 并得到了一个错误。这个错误,至少在 clang 中,看起来像

错误:...对于类型 A::B::C::D::E::X

我更愿意为 B::X 声明错误。

有没有办法将 clang 错误消息配置为使用 using 声明的位置,而不是别名实体?

最佳答案

我认为编译器使用 A::B::C::D::E::X 是好的,否则它可能会产生歧义。就像下面的例子:

namespace A::B::C::D::E {
struct X {
int y;
};
}

namespace B {
using namespace A::B::C::D::E;

void foo() {
X aa;
B::X bb;
aa.y = 0;
}

struct X {
int z;
};

void bar() {
X aa;
B::X bb;
aa.y = 0;
}

}

int main() {
return 0;
}

可以在 B 命名空间中声明一个结构 X,那就是 B::X 并且必须调用另一个 A::B::C::D::E::X 否则无法区分它们。

关于c++ - 限定名称和使用声明的 clang 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55687152/

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