namespace가 왜 필요한가? 실제 개발에서는 혼자서 모든 코드를 작성하기보다 여러 사람이 함께 작업하는 경우가 많다. 이때 서로 다른 개발자가 작성한 함수나 변수의 이름이 중복될 수 있으며, 이러한 이름 충돌이 발생하면 컴파일 에러가 발생한다. 네임스페이스를 사용하면 각각의 식별자를 서로 다른 영역에 소속시켜 이름 충돌을 방지할 수 있고, 그 결과 프로젝트를 안정적으로 진행하고 정상적으로 실행할 수 있다.
C++ 표준 라이브러리헤더파일에서namespace std가 정의된 부분을 찾아서 설명하시오.
<iostream> 헤더파일에서는 _STD_BEGIN ~ _STD_END 매크로를 통해 std 네임스페이스가 정의되어 있으며, 이는 실제로 namespace std로 확장된다. 또한 std 네임스페이스는 여러 표준 헤더파일에 걸쳐 부분적으로 정의된다.
cin, cout이 선언된 파일을 찾아서 그것의 정체를 자세히 설명하시오. <iostream> 헤더 파일에 extern 키워드를 사용하여 선언되어 있는데, 이는 해당 객체가 이 파일이 아닌 다른 파일에 실제로 정의되어 있음을 의미한다. 즉, <iostream>에서는 선언만 제공하고 실제 정의는 외부에 존재한다.
cin, cout이 진짜 선언된 위치는 어디일까? in과 cout의 실제 정의는 C++ 표준 라이브러리에 있으며, 컴파일러가 제공하는 라이브러리의 목적 파일 형태로 포함되어 있다.
첫댓글 lab게시판의 C++정리문제 푸세요
3장부터는 이름공간, 분할컴파일 사용할것