본문 바로가기

Study/C++

헤더파일에 using namespace를 하지 말아야 하는 이유

using 지시문

Using 지시문을 사용 하면 네임 스페이스 이름을 명시적 한정자로 사용 하지 않고 네임 스페이스 의 모든 이름을 사용할 수 있습니다. 네임 스페이스에서 여러 다른 식별자를 사용 하는 경우 구현 파일 (예: * .cpp)에서 using 지시문을 사용 합니다. 하나 또는 두 개의 식별자만 사용 하는 경우에는 using 선언을 사용 하 여 네임 스페이스의 모든 식별자가 아닌 해당 식별자를 범위로 가져옵니다. 지역 변수의 이름이 네임스페이스 변수와 동일한 경우 네임스페이스 변수가 숨겨집니다. 전역 변수와 동일한 이름을 가진 네임스페이스 변수를 사용하면 오류가 발생합니다.

 

참고

using 지시문은 .cpp 파일 맨 위나(파일 범위) 클래스 또는 함수 정의 내에 배치할 수 있습니다.

일반적으로 헤더 파일(*.h)에는 using 지시문을 넣지 마세요. 해당 헤더를 포함하는 모든 파일이 네임스페이스의 모든 식별자를 범위로 가져오기 때문에 이름 숨김 및 이름 충돌 문제가 발생할 수 있으며, 디버그하기 매우 어렵습니다. 헤더 파일에는 항상 정규화된 이름을 사용하세요. 이름이 너무 길면 네임스페이스 별칭을 사용하여 축약할 수 있습니다. 다음을 참조하세요.

 

 

참고:

https://docs.microsoft.com/ko-kr/cpp/cpp/namespaces-cpp?view=vs-2019

 

네임스페이스 (C++)

네임스페이스 (C++)Namespaces (C++) 이 문서의 내용 --> 네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역입니다.A namespace is a declarative region that provides a scope to the identifiers (the names of types, functions, variables, etc) inside it. 네임스페이스는 코드를 논리 그룹으로 구성하고

docs.microsoft.com