다음을 통해 공유


네임스페이스 선언

namespace 선언은 사용자가 선언한 네임스페이스를 식별하고 고유한 이름을 할당합니다.

namespace identifier

설명

이러한 네임스페이스는 규모가 큰 프로그램 및 라이브러리에서 이름 충돌 문제를 해결하는 데 사용됩니다. 프로그래머는 기존 구성 요소와의 충돌을 유발하지 않고 새로운 소프트웨어 구성 요소 및 라이브러리를 개발하는 데 네임스페이스를 사용할 수 있습니다.

예를 들면 다음과 같습니다.

// namespace_declaration1.cpp
namespace X
{
   int i;
   double j;
}
int main()
{
   X::i++;
}

네임스페이스 정의의 구문은 다음과 같습니다.

namespace identifier
{
   [ declaration-list ]
}

namespace-definition은 다른 namespace-definition 내에 중첩될 수 있습니다. 모든 namespace-definition은 파일 범위에서 사용하거나 다른 namespace-definition 바로 안쪽에 사용해야 합니다.

예를 들면 다음과 같습니다.

// namespace_declaration2.cpp
// C2870 expected
namespace A
{
   int j = 3;
   int f(int k);
}

namespace Outer
{
   int n = 6;
   int func(int num);

   namespace Inner
   {
      float f = 9.993;
   }
}

int main()
{
   namespace local   // C2870: not at global scope
   {
   }
}

다른 선언적 영역과 달리 네임스페이스의 정의는 단일 변환 단위의 여러 부분에 걸쳐 나뉠 수 있습니다.

// namespace_declaration3.cpp
namespace A
{
   // declare namespace A variables
   int i;
   int j;
}

namespace B
{
}

namespace A
{
   // declare namespace A functions
   void func(void);
   int int_func(int i);
}

int main()
{
}

초기 정의 후에 네임스페이스가 이러한 방식으로 계속되는 경우 해당 연속을 확장 네임스페이스 정의라고 합니다. 해당 네임스페이스의 원래 정의는 원래 네임스페이스 정의라고 합니다.

이 표기법은 이름이 길거나 프로그램이 큰 경우 사용하기가 번거로울 수 있습니다. using 선언, using 지시문namespace 별칭을 사용하면 네임스페이스 멤버를 더 간단하게 참조할 수 있습니다.

새로운 네임스페이스, 명명되지 않은 네임스페이스 또는 확장된 네임스페이스 정의 중 무엇을 사용하든지 namespace 선언은 중괄호로 묶은 네임스페이스 본문과 함께 사용해야 합니다. 다음 문은

namespace X;

구문 오류입니다. 다음 문은

namespace X{};

구문 오류는 아니지만 의미가 없습니다.

자세한 내용은 네임스페이스를 참조하십시오.

원래 네임스페이스 정의의 식별자는 사용되는 선언적 영역에서 고유해야 합니다. 식별자는 네임스페이스의 이름이며 해당 멤버를 참조하는 데 사용됩니다.

네임스페이스 정의의 선언적 영역이 해당 본문입니다. 본문은 중괄호({})로 묶어야 하며 변수, 함수, 개체, 템플릿 및 중첩된 네임스페이스의 선언 또는 정의를 포함할 수 있습니다. declaration-list의 선언을 네임스페이스의 멤버라고 합니다. 각 네임스페이스 멤버의 이름은 해당 네임스페이스의 이름 및 범위 확인 연산자에 의해 자동으로 한정됩니다.

참고 항목

참조

네임스페이스 (C++)

C++ 키워드

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