명명되지 않은 네임스페이스
명명되지 않은 네임스페이스는 전역 정적 변수 선언을 사용하기 위한 상위 대안으로 선언될 수 있습니다.
namespace { declaration-list }
설명
위와 같은 구문이 있는 명명되지 않은 네임스페이스 정의는 다음으로 대체된 것처럼 동작합니다.
unique { declaration-list }
using namespace unique;
각 명명되지 않은 네임스페이스에는 프로그램에서 할당되고 유지 관리되며 전체 프로그램에서 다른 모든 식별자와 구별되는 unique로 표현되는 식별자가 있습니다. 예를 들면 다음과 같습니다.
// 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++
}
명명되지 않은 네임스페이스는 정적 변수 선언의 상위 대체 선언입니다. 네임스페이스를 사용하면 변수와 함수가 전체 변환 단위 내에서 표시되지만 외부에는 표시되지 않습니다. 명명되지 않은 네임스페이스에 있는 엔터티는 외부 링크를 가질 수 있지만 고유한 이름으로 해당 변환 단위에 효과적으로 한정되므로 다른 변환 단위에서는 볼 수 없습니다.