더북(TheBook)

마찬가지로 모든 플랫폼에서 사용할 수 없는 새로운 언어 기능, 예를 들어 이동 문법(2.3.5절)을 사용하려면 조건부 컴파일이 필요하다.

#ifdef MY_LIBRARY_WITH_MOVE_SEMANTICS
    ... 이동을 통해 무언가를 효율적으로 만든다.
#else
    ... 무언가를 덜 효율적이지만 이식성이 있게 만든다.
#endif

여기서 우리는 이동 문법을 지원할 때 이 기능을 사용할 수 있으며 이동 문법을 지원하지 않아도 컴파일러로 이식성을 유지할 수 있다. 물론 이동 문법을 실제로 사용할 수 있을 때만 매크로를 정의하는 신뢰 가능한 도구가 필요하다. 조건부 컴파일은 매우 강력하지만 그만큼 비용이 든다. 소스 코드 및 테스트의 유지 관리가 더 힘들고 오류가 발생하기 쉽다. 이러한 단점은 잘 설계된 캡슐화를 통해 줄어들 수 있으므로 공통 인터페이스를 통해 서로 다른 구현을 사용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.