본문 바로가기

IT/Software

C/C++ Coding - namespace, using 의 장점과 사용법

가끔 소스코드에 등장하기에, 정리된 페이지 보면서 습득~~

namespace

아래 예는 Tree 라는 문자열이 라이브러리 A와 B 에 쓰여 컴파일 오류가 나는 상황, 가장 쉽게는 변수명을 바꾸면 되는데, 양이 많은 경우에는 난감할 따름.

이경우, namespace 가 엄청 유용하다.

(via You complete me :: namespace의 장점과 사용법) 

구현은 간단합니다. 

namespace로 정의할 것들을 블럭으로 묶으면 됩니다. 
namespace A { 
struct Tree {}; 
} 

namespace B { 
int Tree; 

사용하는 측에서는 다음중 하나를 선택해 쓰면 됩니다. 
1. using namespace A; 
 (의미 : 현재 소스 코드에 A사 라이브러리만 쓰이는경우, 이름충돌이 예상되지 않으므로, A에 있는 모든 이름들을 현재 소스의 범위내에 가져온다) 
2. using A::Tree; 
(의미 : 현재 소?코드에 A사와 B사의 라이브러리가 동시에 쓰이는데, 현재 블럭에서 사용할 Tree는 A사의 Tree 구조체이다) 
3. B::Tree = 10; 
(의미 : 현재 소스 코드에 A사와 B사의 라이브러리가 동시에 쓰이는데, 현재 블럭에서 두 회사의 라이브러리가 모두 섞여 쓰이므로 명시적으로 이름을 정해준다)


using

그리고, using 이라는 키워드가 사용되는데 이것에 대한 설명도 첨언,

원래 namespace를 계속 써줘야 하는데 특정 파일내에서는 무조건 A namespace를 사용한다던지, 주로 사용하는 namespace를 생략하고 싶다던지 하면 using을 잘 활용하면 된다.

(via [C++] namespace 사용법 :: 돼민이)  

std는 namespace 이며 cout은 함수이다. 
std::cout std::endl  매번 std::을 코딩하기 번거롭다. 
이를 해결 하기 위해 using을 사용해 std::를 제거해 보자. 

[사용법]  
using std::cout;  
using std::endl;

phases of the moon collage from https://unsplash.com/photos/Nk5tRVpU484

모양에 따라 이름이 바뀌는 달~~~~~~