Page 21 -
P. 21
Warning using 디렉티브를 사용할 때 주의하자
소스 파일에서 using 디렉티브를 사용할 때는 각별히 주의해야 한다. using namespace std란 디렉티브로 std에
1
속한 모든 이름에 접근할 수 있기 때문이다. 그래서 본의 아니게 로컬에 있는 이름이나 상위 네임스페이스 이름을 가
려버릴 수 있다.
헤더 파일에서는 using 디렉티브를 사용하면 안 된다. 헤더 파일에 using namespace std 디렉티브를 적으면 std 표준 라이브러리
에 속한 이름이 모두 드러나게 된다.
네임스페이스 앨리어스
네임스페이스 앨리어스(namespace alias)는 네임스페이스에 대한 동의어를 정의한다. 긴 네임스페
이스나 중첩된 네임스페이스 대신 이렇게 앨리어스를 사용하면 편할 때가 많다.
#include <chrono>
...
namespace sysClock= std::chrono::system_clock;
auto nowFirst= sysClock::now();
auto nowSecond= std::chrono::system_clock::now();
now 함수를 공식 네임스페이스로 가리킬 수도 있지만 네임스페이스 앨리어스로 가리킬 수도 있
다. 네임스페이스 앨리어스를 사용할 때는 다른 이름을 가리지 않도록 주의한다.
1.3.3 실행 파일 생성하기
라이브러리를 명시적으로 링크할 일은 거의 없지만, 플랫폼마다 다를 수 있다. 예를 들어 g++ 또
는 clang++ 컴파일러에서 멀티스레딩 기능을 사용하려면 다음과 같이 pthread 라이브러리에 대
한 링크를 직접 지정해야 한다.
g++ -std=c++14 thread.cpp -o thread -pthread
37
c++_06.indd 37 2021-11-19 오전 9:25:43