Espacios de nombres sin nombre
Puede declarar un espacio de nombres sin nombre como alternativa superior al uso de declaraciones de variables estáticas globales.
namespace { declaration-list }
Comentarios
Una definición sin nombre de espacio de nombres que hace la sintaxis mostrar anterior se comporta como si fuera reemplazada por:
*declaración-lista única *} deespacio de nombres {
el espacio de nombres único;
Cada espacio de nombres sin nombre tiene un identificador, asignado y mantenido por el programa y representado aquí por único, que se diferencia del resto de los identificadores del programa completo.Por ejemplo:
// 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++
}
Los espacios de nombres sin nombre son un reemplazo superior para la declaración estática de variables.Permiten que las variables y funciones estén visibles dentro de una unidad de traducción completa, si bien no visible externamente.Aunque las entidades en un espacio de nombres sin nombre pueden tener vinculación externa, un nombre las califican eficazmente único a la unidad de traducción y por consiguiente nunca pueden consideradas de cualquier otra unidad de traducción.