다음을 통해 공유


명명되지 않은 네임스페이스

명명되지 않은 네임스페이스는 전역 정적 변수 선언을 사용하기 위한 상위 대안으로 선언될 수 있습니다.

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++
}

명명되지 않은 네임스페이스는 정적 변수 선언의 상위 대체 선언입니다. 네임스페이스를 사용하면 변수와 함수가 전체 변환 단위 내에서 표시되지만 외부에는 표시되지 않습니다. 명명되지 않은 네임스페이스에 있는 엔터티는 외부 링크를 가질 수 있지만 고유한 이름으로 해당 변환 단위에 효과적으로 한정되므로 다른 변환 단위에서는 볼 수 없습니다.

참고 항목

참조

네임스페이스 (C++)