有什么区别:
namespace {
// code
} // anonymous namespace
和
{
// code
}
我理解:
我错过了什么吗?
答案 0 :(得分:4)
存在巨大差异。
匿名命名空间中的任何内容仅对该编译单元可见。 (它有点类似于static
)的一个特定用途。您不能将语句放入匿名命名空间。
{ }
是一个范围块。它可以包含语句。
答案 1 :(得分:2)
namespace {}
创建一个命名空间(名称空间),用于更改编译器找到声明的内容(在这种情况下,它是一个匿名命名空间,意味着内部声明的符号只能在当前编译单元中访问。
{}
创建一个范围(可执行代码块),用于隔离内部的语句,并更改块中代码的执行方式。
第一个对编译器很重要,第二个在执行时很重要。它们完全不同。
答案 2 :(得分:1)
存在大差异:匿名命名空间中定义的内容仍然存在于外部,尽管在块内创建的内容随着它的结束而消失。