2.이식성과 표준
이식성
Window 운영 체제 환경에서 개발된 C++ 프로그램이 Lunix나 Mac OS와 같은 다른 운영 체제에서 실행한다면 실행이 될까? 물론 새로운 플랫폼에 맞게 제작된 C++ 컴파일러를 사용해서 재 컴파일을 해야 할 것이다. 이때 재 컴파일러만 하고 소스 코드는 수정하지 않아도 될까? 만약 소스 코드를 수정하지 않고 재 컴파일 만으로 제대로 실행이 된다면, 프로그램이 이식성(Portable)이 있다고 한다.
프로그램이 이식성을 갖기 위해서 두 가지 장애 요인이 있다.
- 특정 하드웨어에 종속된 프로그램은 이식성을 갖지 못한다.
- 프로그래밍 언어 간의 상이성
특정 하드웨어의 종속 문제는 예를 들어, 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++ 클래스 표준 라이브러리도 제공한다.