命名空间新手问题:共享相同命名空间的两个 cpp 文件具有相同的变量
namespace noob questions: two cpp files sharing the same namespace have the same variable
命名空间菜鸟问题
我在同一个二进制文件中有两个文件。
// class1.cpp
namespace A {
const std::string k1 = "abc";
}
// class2.cpp
namespace A {
const std::string k1 = "bcd";
}
它们没有在头文件中声明。
他们不会相撞吗?
我试着编译,它可以编译。
我应该将它们放入未命名的命名空间,但即使我不这样做,它似乎仍然能够编译。
这是为什么
编辑:实际上包含这两个文件以构建相同的二进制文件。
这是因为const
意味着internal linkage。如果您将 A::k1
定义为非常量,您将收到有关重复符号的预期错误。
命名空间菜鸟问题 我在同一个二进制文件中有两个文件。
// class1.cpp
namespace A {
const std::string k1 = "abc";
}
// class2.cpp
namespace A {
const std::string k1 = "bcd";
}
它们没有在头文件中声明。 他们不会相撞吗? 我试着编译,它可以编译。 我应该将它们放入未命名的命名空间,但即使我不这样做,它似乎仍然能够编译。 这是为什么
编辑:实际上包含这两个文件以构建相同的二进制文件。
这是因为const
意味着internal linkage。如果您将 A::k1
定义为非常量,您将收到有关重复符号的预期错误。