Podczas korzystania z anonimowego obszaru nazw są jakieś problemy, jeśli są zagnieżdżone w innym obszarze nazw? Na przykład, czy istnieje prawdziwa różnica pomiędzy Foo1.cpp i Foo2.cpp w poniższym kodzie:Zagnieżdżona anonimowa przestrzeń nazw?
// Foo.h
namespace Foo
{
void fooFunc();
}
// Foo1.cpp
namespace Foo
{
namespace
{
void privateFunction()
{
...
}
}
void fooFunc()
{
privateFunction();
}
}
// Foo2.cpp
namespace
{
void privateFunction()
{
...
}
}
namespace Foo
{
void fooFunc()
{
privateFunction();
}
}
Wyeksportowane symbole będą różne. Zobacz wyjście nm. –
Po prostu pedantyczny, termin techniczny to "bezimienny obszar nazw", a nie anonimowy. – GManNickG
Związki są anonimowe, przestrzeń nazw nie ma nazwy. Ale kogo to obchodzi :) –