그럼에도 불구하고 using namespace std를 쓰고자 한다면 가능하면 전역으로 쓰지 말고
아래와 같이 함수나 클래스나 구조체 등의 영역 안에 쓰시기 바랍니다.
#include <isotream>
// 이렇게 전역으로 쓰는 것은 가능하면 하지 마세요!!
using namespace std;
void foo()
{
// 이렇게 함수 안에서 쓰면 그나마 std가 사용된 영역을 알 수 있기 때문에 전역으로 쓰는 것보다 낫습니다.
using namespace std;
// 함수 구현 부분..
}
심플한 것을 개발하거나 학습을 위한 용도로는 using namespace std를 사용하는 것이 편하겠습니다만
대부분의 프로그램은 개발하면서 복잡도가 증가하기 때문에 using namespace std를 사용하지 않는 것이 좋습니다.
왜냐하면 std 안에는 수많은 식별자들이 있어서 개발 과정에서 이름이 충돌할 소지가 다분하기 때문입니다.
예를 들어 아래와 같은 코드가 있다고 했을 때
foo.h 에도 cout이 있을 수 있기 때문에 컴파일이 안되거나 컴파일이 된다고 하더라도 잘못된 cout을 호출할 수 있습니다.
따라서 아래와 같이 어디의 cout인지 명시적으로 지정해 주어야 합니다.
그런데 이렇게 매번 명시적으로 지정하는 것은 귀찮은 일입니다.
그래서 아래와 같이 typedef를 활용할 수 있습니다.
그럼에도 불구하고 using namespace std를 쓰고자 한다면 가능하면 전역으로 쓰지 말고
아래와 같이 함수나 클래스나 구조체 등의 영역 안에 쓰시기 바랍니다.