
| ||||
프로그래밍 언어 목록 · 분류 · 문법 · 예제 |
Namespace / 이름 공간
C++에서의 네임스페이스의 사용 예시.[1]
프로그램상에서 하나의 네임스페이스(=이름 공간)에서는 같은 식별자가 같은 개체를 가리킨다. 반대로 네임스페이스가 다르면 위의 C++의 소스처럼 변수의 이름이 text로 동일해도 실제로 가리키는 변수가 달라지게 된다.
프로그램이 커질수록 변수나 함수명이 서로 빈번하게 충돌하기 때문에 필요성이 대두되었다. 그나마 한 프로그램 내에서 이름 충돌이 발생하면 어떻게든 해결할 수 있지만, 사용 중인 여러 라이브러리 내에서 서로 이름 충돌이 발생할 경우 답이 없다.
이러한 이유로 최신 프로그래밍 언어에선 필수라고 해도 될 정도로 네임스페이스나 그와 유사한 기능을 제공하고 있다.
예컨대 홍길동이라는 이름을 가진 동명이인이 나무아파트 1동과 2동에 각각 살고 있다고 가정하자. 그러면 아파트 관리사무소에서 주민을 호칭할 때 홍길동이라고만 하면 누구를 가리키는지 알기 어려우니 '1동 홍길동'과 '2동 홍길동'과 같이 앞에 거주하는 동 번호를 붙여서 부르는데, 이러한 상황이 네임스페이스를 사용하는 상황에 대한 대표적인 비유이다.
꼭 프로그래밍이 아니더라도 C:\User\name\같은 파일 경로부터 namu.wiki같은 도메인 네임까지 네임스페이스가 사용된 곳은 아주 많다.
#include <iostream>
using namespace std;
namespace namu
{
char text[20] = "나무위키";
}
namespace wiki
{
char text[20] = "Namuwiki";
}
int main()
{
cout << namu::text << endl;
cout << wiki::text << endl;
return 0;
}C++에서의 네임스페이스의 사용 예시.[1]
프로그램상에서 하나의 네임스페이스(=이름 공간)에서는 같은 식별자가 같은 개체를 가리킨다. 반대로 네임스페이스가 다르면 위의 C++의 소스처럼 변수의 이름이 text로 동일해도 실제로 가리키는 변수가 달라지게 된다.
프로그램이 커질수록 변수나 함수명이 서로 빈번하게 충돌하기 때문에 필요성이 대두되었다. 그나마 한 프로그램 내에서 이름 충돌이 발생하면 어떻게든 해결할 수 있지만, 사용 중인 여러 라이브러리 내에서 서로 이름 충돌이 발생할 경우 답이 없다.
이러한 이유로 최신 프로그래밍 언어에선 필수라고 해도 될 정도로 네임스페이스나 그와 유사한 기능을 제공하고 있다.
예컨대 홍길동이라는 이름을 가진 동명이인이 나무아파트 1동과 2동에 각각 살고 있다고 가정하자. 그러면 아파트 관리사무소에서 주민을 호칭할 때 홍길동이라고만 하면 누구를 가리키는지 알기 어려우니 '1동 홍길동'과 '2동 홍길동'과 같이 앞에 거주하는 동 번호를 붙여서 부르는데, 이러한 상황이 네임스페이스를 사용하는 상황에 대한 대표적인 비유이다.
꼭 프로그래밍이 아니더라도 C:\User\name\같은 파일 경로부터 namu.wiki같은 도메인 네임까지 네임스페이스가 사용된 곳은 아주 많다.
기준 총 문서 수 7838297개 | |
1760907 | |
5228231 | |
212653 | |
92140 | |
1966 | |
536654 | |
2678 | |
1886 | |
1156 | |
26 | |
투표 | 0 |
0 | |
특수기능 | 0 |
시스템 | 0 |
특정판 | 0 |
삭제된사용자 | 0 |
나무위키에서 가장 많이 접하는 문서의 네임스페이스는 다름 아닌 "문서:"다. 디폴트 이름공간이라 문서 제목에 직접 표시되지 않을 뿐.[6][7]
이 중 "토론", "투표", "특수기능", "시스템"의 경우 네임스페이스는 존재하지만 아직까지 사용된 적이 없거나, 예전에 사용되었으나 현재는 사용하지 않는 네임스페이스들이라 0개로 뜬다. "특정판"은 현재로는 불명이며, "삭제된사용자"는 말 그대로 삭제된 문서만 있는 네임스페이스이므로 당연히 0개로 뜬다. 해당 네임스페이스에 속하는 임의의 문서로 들어가면, 'ACL에 허용 규칙이 없기 때문에 읽기 권한이 부족합니다. 해당 문서의 ACL 탭을 확인하시기 바랍니다.' 문구가 출력된다.[8]
흔한 오해 중 하나로, "더미:"는 시스템 상 네임스페이스의 종류가 아니다. RandomPage에서도 '더미'는 없다.
[1] 이 코드의 실행 결과는 첫 번째 줄에는 '나무위키'가 출력되고 두 번째 줄에는 'Namuwiki'가 출력된다.[2] 대표적으로 나무위키:대문의 "나무위키:" 부분.[3] 가령 "사용자:"가 붙은 것은 모든 사용자 또는 IP가 읽을 수 있지만 해당 사용자 본인과 봇 그리고 관리자만 편집할 수 있다. "틀:"이 붙은 것은 로그인한 사용자 또는 IP 유저 중 해당 문서에 기여한 유저만 편집할 수 있으며, "휴지통:", "파일휴지통:", "위키운영:"이 붙은 것은 관리자만 읽거나 편집할 수 있다.[4] 스킨에 따라 이름 공간 부분의 색은 다른 글자와 미세하게 다르기도 하다. 나무위키 이전 스킨인 senkawa 스킨의 경우 라이트 테마에서의 색은 #545454(일반 글씨는 #373A3C)이며, 다크 테마에서의 색은 #C7C7C7(일반 글씨는 #DDDDDD)이다. 이것으로 해당 이름 공간이 존재하는지 확인할 수 있다.[5] 파일 문서와 사용자 문서의 경우 새 문서 만들기로 문서를 생성하려 하면 오류가 뜬다.[6] 검색창에 "문서:"라고 치면 (백스페이스 문자)부터 문서들이 순서대로 나열되고, "문서:" 뒤에 문서명을 치면 일반 검색과 똑같은 역할을 한다는 점에서 네임스페이스가 명시되지 않은 모든 문서의 네임스페이스는 '문서'임을 알 수 있다.[7] 또한 문서명이 "문서:네임스페이스:"일 경우 문서명 앞에 "문서:네임스페이스:"라고 뜬다(예를들어 문서명이 "문서:틀"일경우 "문서:틀:"이라고뜬다)[8] 그리고 해당 문서의 ACL 탭을 확인하려고 하면 오류가 발생하며 '문서 이름이 올바르지 않습니다.' 문구가 출력된다.
![]()
이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외)
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.
나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다.
나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 원할 경우 직접 토론을 발제할 수 있습니다.