Geschachtelte anonyme namespace?

Wenn Sie eine anonyme namespace gibt es irgendwelche Probleme, wenn es verschachtelt in einem anderen Namensraum? Zum Beispiel gibt es tatsächlich einen Unterschied zwischen Foo1.cpp und Foo2.cpp in den folgenden code:

//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();
    }
}
  • Exportierte Symbole werden anders. Schauen Sie einem nm-Ausgabe.
  • Nur um pedantisch zu werden, der Fachbegriff ist unnamed namespace nicht anonym.
  • Gewerkschaften sind anonym, namespace Unbenannte. Aber who cares 🙂
  • Uns C++ Pedanten tun.
  • Während der Begriff ist unnamed, wenn Sie überprüfen Sie mit nm oder gdb unter den tools nennen es anonymous namespace, so dass die Verwirrung ist verständlich.
InformationsquelleAutor Rob | 2010-01-19
Schreibe einen Kommentar