Lorsque vous utilisez un espace de noms anonyme, y a-t-il des problèmes s'il est imbriqué dans un autre espace de noms? Par exemple, est-il une réelle différence entre Foo1.cpp et Foo2.cpp dans le code suivant:Espace de noms anonyme imbriqué?
// 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();
}
}
Les symboles exportés seront différents. Jetez un oeil à une sortie nm. –
Juste pour être pédant, le terme technique est 'espace de nommage sans nom ', pas anonyme. – GManNickG
Les unions sont anonymes, les espaces de noms ne sont pas nommés. Mais qui s'en soucie :) –