Goomba

[C++] 익명 네임스페이스

  • cpp

C++에서 namespace는 함수나 변수 등의 식별자가 충돌하는 것을 방지하는 역할을 합니다.

하지만 아래와 같이 이름이 없는 namespace가 있는데,
이를 익명 네임스페이스(Anonymous namespace)라고 합니다.

형태

// test.cpp

namespace {
    int count;
    int function(void) {
        ...
    }
}

test.cpp파일에서는 익명 네임스페이스의 변수나 함수에 접근이 가능하지만
다른 파일에서는 해당 네임스페이스에 접근할 수 없습니다.

  • 쉽게 말해 C언어의 static과 동일한 역할이라고 생각하면 됩니다.
  • 또한 네임스페이스가 없기 때문에 ::으로 접근할 필요도 없습니다.

여담으로, 익명 네임스페이스는 진짜 이름이 없는 것이 아니라
컴파일러가 임의로 이름을 붙여서 사실상 알기 어려운 것이라고 합니다. (그래서 '익명' 네임스페이스가 아닐까 합니다.)