본문 바로가기
C,C++

[C++] 익명 네임스페이스, anonymous(unnamed) namespace

by 슈퍼닷 2019. 12. 8.
반응형
namespace A
{
	int a;
}

 이 namespace의 이름은 A 이다.

 

그렇다면 이건 어떤가?

 

namespace
{
	int a;
}

이 namespace는 이름이 없다.

이런 네임스페이스를 익명 네임스페이스 ( anonymous namespace ) 다.

 

그렇다면 이건 어떻게 동작할까?

 

익명 네임스페이스는 자신이 위치한 파일 내에서만 존재한다.

some_header.h 에

 

namespace
{
	int a;
}

가 있다면 some_header.h 에서는 int a 에 접근 가능하지만 other_header.h 에서는 이 익명 네임스페이스에 접근이 불가능하다.

static 과 동일한 역할을 한다고보면된다.

static int a 가 전역변수로 있다면 이 변수는 다른 파일에서는 접근 불가능 하지 않는가? 이와 똑같다.

 

변수 int a 에 대한 접근은 그냥 일반변수 int a를 쓰는것처럼  a = 3; 이렇게 접근 하면된다. 따로 ::를 붙여줄 필요가없다.

 

그렇다면 이걸 왜 쓰는것일까?

변수의 중복문제, 이 파일내에서만 필요한경우 등 설계를 깔끔하게 하기위한 도구라고 보면된다.

 

반응형

댓글