서적 정리/C++ 기초 플러스

2.이식성과 표준

민돌이2 2022. 7. 20. 11:06

이식성

Window 운영 체제 환경에서 개발된 C++ 프로그램이 Lunix나 Mac OS와 같은 다른 운영 체제에서 실행한다면 실행이 될까? 물론 새로운 플랫폼에 맞게 제작된 C++ 컴파일러를 사용해서 재 컴파일을 해야 할 것이다. 이때 재 컴파일러만 하고 소스 코드는 수정하지 않아도 될까? 만약 소스 코드를 수정하지 않고 재 컴파일 만으로 제대로 실행이 된다면, 프로그램이 이식성(Portable)이 있다고 한다.

프로그램이 이식성을 갖기 위해서 두 가지 장애 요인이 있다.

  1. 특정 하드웨어에 종속된 프로그램은 이식성을 갖지 못한다.
  2. 프로그래밍 언어 간의 상이성

특정 하드웨어의 종속 문제는 예를 들어, PC에서 플레이하는 게임 파일을 그대로 휴대폰으로 옮긴다고 해서 휴대폰에서 게임을 실행할 순 없다.

프로그래밍 언어 간의 상이성은 사투리로 비유할 수 있다. 전라도 지방과 경상도 지방이 모두 한국어를 사용하지만, 서로 다른 사투리를 사용하는 것과 같다. 개발자들 마다 자신의 편의성과 습관으로 인해 다른 환경에서 실행이 되지 않을 수 있다.

 

 

표준

많은 개발자들이 자신이 사용하는 C++ 버전이 다른 개발자들이 사용하는 C++ 버전과 호환되기를 원하지만, 명확하게 정해진 표준이 없다면 불가능한 일이다. 그래서 미국 국립 표준 협회(American National Standard Institue : ANSI)에서는 C++ 표준을 정하기 위해 1990년에 ANSI X3J16이라는 위원회를 구성했다. 그후, 국제표준화기구(International Organization for Standardization : IOS)도 ISO-WG-21 이라는 위원회를 구성하여 표준화 작업에 참여함으로써, C++ 표준화 개발을 위한 ANSI/ISO 위원회가 만들어지게 되었다.

ANSI의 표준은 C 언어를 정희할 뿐만 아니라, ANSI C 컴파일러들이 지원하는 표준 C 라이브러리도 정의하고 있다. C++ 역시 그 라이브러리를 사용한다. 

ISO C++ 표준은 ANSI C 표준에 기반을 두고 있다. ANSI C 표준은 C 언어를 정의할 뿐만 아닐, ANSI C 컴파일러들이 지원하는 표준 C 라이브러리도 정의하고 있다. C++ 역시 해당 라이브러리를 사용한다. 또한 ANSI/ISO C++ 표준은 C++ 클래스 표준 라이브러리도 제공한다.

728x90