Partager via


Les espaces de noms sans nom

Vous pouvez déclarer un espace de noms sans nom en tant qu'alternative supérieure à utiliser des déclarations globales de variable statique.

namespace { declaration-list }

Notes

Une définition sans nom de l'espace de noms faisant afficher la syntaxe ci-dessus se comporte comme si elle était remplacées par :

*seul **{déclaration-liste *} del'espace de noms

à l'aide de l'espace de noms unique;

Chaque espace de noms sans nom est un identificateur, assigné et gérée par le programme et représenté ici par unique, qui diffère de tous les autres identificateurs dans le programme entier.Par exemple :

// unnamed_namespaces.cpp
// C2872 expected
namespace { int i; }          // unique::i
void f() { i++; }             // unique::i++

namespace A {
    namespace {
        int i;      // A::unique::i
        int j;      // A::unique::j
    }
}

using namespace A;

void h()
{
    i++;            // C2872: unique::i or A::unique::i
    A::i++;         // A::unique::i++
    j++;            // A::unique::j++
}

Les espaces de noms sans nom sont un remplacement supérieur pour la déclaration statique de variables.Ils permettent aux variables et aux fonctions d'être visibles dans une unité de traduction entière, mais qui ne sont pas visibles de l'extérieur.Bien que les entités dans un espace de noms sans nom peuvent avoir une liaison externe, elles sont effectivement qualifiées par un nom unique à leur unité de traduction et peut donc jamais être vues de toute autre unité de traduction.

Voir aussi

Référence

Les espaces de noms (C++)