namespace

Lab Ghost·2023년 9월 10일
0

C++

목록 보기
1/1

namespace

namespace(이름공간)은 C에서는 없던 새로운 개념이다.
쉽게 요약해서 함수나 변수, 구조체 등의 소속을 정해준다고 생각하면 된다.

여러 개발자가 협업하는 경우, 두 개의 라이브러리에서 동일한 이름의 함수를 정의한 경우 등에서 각각의 함수를 구분하기 위해 namespace를 사용한다.

1. namespace 기본 예제

예를 들어 같은 이름의 함수를 사용하고 싶을 때
아래와 같이 동일한 함수 이름을 가진 코드는 빌드가 되지 않는다.

namespace를 아래와 같이 선언해주면

빌드가 정상적으로 되는 것을 확인할 수 있다.

namespace는 ::을 통해 접근할 수 있으며 코드가 길어진다는 단점이 있지만,
이름 충돌을 피하고 어느 함수를 실행시키는지 명확해 진다는 장점이 있다.

namespace 없이 디폴트로 특정 namespace에 있는 함수를 사용하고 싶은 경우 using 선언을 해주면 된다.

using namespace를 사용한 경우 Hello2 namespace에 접근하지 않으면 Hello1 namespace에 자동으로 접근되는 것을 확인할 수 있다.

using 사용을 통해 함수 내부에서 namespace를 선언하여 사용할 수도 있다.

2. anonymous(unnamed) namespace

이름이 없는 이름공간으로 선언된 파일 안에서만 사용할 수 있는 namespace이다.
선언은 아래와 같이 한다.

static 을 사용한 것과 같은 효과를 낸다.

[실습환경]
Ubuntu Linux
cmake 3.27.4
gcc 9.4.0

profile
labghost

0개의 댓글

관련 채용 정보