[C++] 익명 네임스페이스
C++에서 namespace는 함수나 변수 등의 식별자가 충돌하는 것을 방지하는 역할을 합니다.
하지만 아래와 같이 이름이 없는 namespace가 있는데,
이를 익명 네임스페이스(Anonymous namespace)라고 합니다.
형태
// test.cpp
namespace {
int count;
int function(void) {
...
}
}
test.cpp파일에서는 익명 네임스페이스의 변수나 함수에 접근이 가능하지만
다른 파일에서는 해당 네임스페이스에 접근할 수 없습니다.
- 쉽게 말해 C언어의
static과 동일한 역할이라고 생각하면 됩니다. - 또한 네임스페이스가 없기 때문에
::으로 접근할 필요도 없습니다.
여담으로, 익명 네임스페이스는 진짜 이름이 없는 것이 아니라
컴파일러가 임의로 이름을 붙여서 사실상 알기 어려운 것이라고 합니다. (그래서 '익명' 네임스페이스가 아닐까 합니다.)