네임스페이스 사용법
#include <iostream>
namespace MySpace1
{
int doSomething(int a, int b)
{
return a + b;
}
}
int doSomething(int a, int b)
{
return a * b;
}
using namespace std;
int main()
{
cout << MySpace1::doSomething(3, 4) << endl;
cout << doSomething(3, 4) << endl;
return 0;
}
namespace는 중첩해서 선언 및 사용할 수 있다.
#include <iostream>
namespace MySpace1
{
namespace test
{
int doSomething(int a, int b)
{
return a + b;
}
}
}
int doSomething(int a, int b)
{
return a * b;
}
using namespace std;
int main()
{
cout << MySpace1::test::doSomething(3, 4) << endl;
cout << doSomething(3, 4) << endl;
return 0;
}
그리고 using 문법을 사용해서 함수 호출 시 네임스페이스를 생략해서 사용할 수 있도록 선언할 수 있다.
#include <iostream>
namespace MySpace1
{
namespace test
{
int doSomething(int a, int b)
{
return a + b;
}
}
}
using namespace std;
using namespace MySpace1::test; // 해당 문법을 통해 함수를 간단히 사용
int main()
{
cout << doSomething(3, 4) << endl;
return 0;
}
하지만, 이처럼 namespace를 생략할 수 있도록 using을 사용하였을 때 namespace 내부의 함수와 해당 소스파일에서 존재하는 함수의 이름이 동일한 경우가 존재한다면, 컴파일 에러가 발생한다.
#include <iostream>
namespace MySpace1
{
namespace test
{
int doSomething(int a, int b)
{
return a + b;
}
}
}
int doSomething(int a, int b)
{
return a * b;
}
using namespace std;
using namespace MySpace1::test;
int main()
{
cout << MySpace1::test::doSomething(3, 4) << endl;
cout << doSomething(3, 4) << endl;
return 0;
}

그래서 using namespace를 헤더 파일에선 무조건 사용하지 않는게 좋고, cpp 파일에서도 웬만하면 쓰지 않는 것이 좋은 것 같다.
꼭 써야겠다면, 이처럼 함수 안에서 `using namespace`를 사용하던가, 아니면 필요한 가져와서 사용하는 방법이 있다.
int main()
{
using namespace std;
cout << MySpace1::test::doSomething(3, 4) << endl;
cout << MySapce2::doSomething(3, 4) << endl;
return 0;
}
int main()
{
using std::cout;
cout << MySpace1::test::doSomething(3, 4) << std::endl;
cout << MySapce2::doSomething(3, 4) << std::endl;
return 0;
}
iostream의 std 네임 스페이스 선언


이처럼 매크로를 통해 `namespace std{`와 `}`를 따로 선언하여 `cin`, `cout`, 등의 함수에 대해 namespace를 지정해주었다.
'C,C++ > 홍정모의 따배C++' 카테고리의 다른 글
| [C++] 전역 변수, 내부 연결, 외부 연결, 헤더 include 주의점 (0) | 2025.12.20 |
|---|---|
| [C++] 함수 내의 static 변수 선언 (0) | 2025.11.30 |
| [C++] 변수 초기화 방식 (0) | 2025.09.25 |
| [C++] 전처리기, 매크로 (0) | 2025.09.21 |
| [C++] 전방 선언과 헤더 파일에 대한 고찰 (0) | 2025.09.10 |