我很难理解编译器的抱怨:
namespace
{
}
inline namespace
{
}gcc说
必须在初始定义处指定
内联命名空间。
MSVC说标题里有什么。
我的混乱来自于我的预期,即接下来的两个匿名命名空间应该被视为一个无关新空间的新声明,但是编译器抱怨说它们以某种方式被链接起来,就像它试图用第二个空间扩展第一个名称空间一样。
发布于 2020-06-10 07:13:03
翻译单元中的每个匿名命名空间都是相同的命名空间。
适用于:
namespace
{
struct F {};
}
namespace
{
struct G {};
}编译器有效地生成如下内容:
namespace __mytranslation_unit_anonymous_namespace
{
struct F {};
}
namespace __mytranslation_unit_anonymous_namespace
{
struct G {};
}F和G都位于同一个名称空间中。如果将代码复制到新的翻译单元,编译器将生成一个新的命名空间名称,例如__mytranslation_unit2_anonymous_namespace。
https://stackoverflow.com/questions/62297485
复制相似问题