본문으로 이동

임베디드 C++

위키백과, 우리 모두의 백과사전.

임베디드 C++(Embedded C++, EC++)는 임베디드 시스템방언C++ 프로그래밍 언어이다. NEC, 히타치, 후지쯔, 도시바 등 주요 일본 중앙 처리 장치(CPU) 제조업체들이 주도하는 산업 그룹에 의해 정의되었으며, 임베디드 애플리케이션을 위한 C++의 단점을 해결하고자 했다. 이 노력의 목표[1]는 C++ 언어의 가장 유용한 객체 지향 기능을 유지하면서 코드 크기를 최소화하고 실행 효율성을 극대화하며 컴파일러 구축을 단순화하는 것이다. 공식 웹사이트는 목표를 "평균 C 프로그래머가 이해하고 사용하기 쉬운 C++의 하위 집합을 임베디드 시스템 프로그래머에게 제공하는 것"이라고 명시하고 있다.[2]

C++와의 차이점

[편집]

임베디드 C++는 C++의 일부 기능을 제외한다.

기능 ISO/ANSI C++ 임베디드 C++
예외 처리 Yes No
다중 상속 Yes No
mutable, 저장소 클래스 지정자 Yes No
이름공간 Yes No
템플릿 Yes No
런타임 타입 정보 (typeid) Yes No
스타일 캐스트
(static_cast, dynamic_cast, reinterpret_cast, 및 const_cast)
Yes No
가상 기반 클래스 Yes No

그린 힐즈(Green Hills) 및 IAR 시스템즈(IAR Systems)와 같은 일부 컴파일러는 ISO/ANSI C++의 특정 기능을 임베디드 C++에서 활성화할 수 있도록 허용한다. IAR 시스템즈는 이를 "확장 임베디드 C++"라고 부른다.[3]

컴파일

[편집]

EC++ 프로그램은 모든 C++ 컴파일러로 컴파일할 수 있다. 하지만 EC++에 특화된 컴파일러는 최적화 작업을 더 쉽게 수행할 수 있다.

EC++에 특화된 컴파일러는 다음 회사에서 제공한다.

비판

[편집]

이 언어는 많은 전문 C++ 프로그래머들에게 좋지 않은 평가를 받았다. 특히 비야네 스트롭스트룹은 "내가 아는 한 EC++는 죽었다 (2004년), 만약 그렇지 않다면 그래야 한다."라고 말했다.[7] 실제로 공식 영어 EC++ 웹사이트는 2002년 이후 업데이트되지 않았다. 그럼에도 불구하고, C++의 제한된 하위 집합 (임베디드 C++ 기반)은 애플에 의해 인기 있는 매킨토시, 아이폰, 아이패드 제품의 macOS, iPadOS 및 iOS 운영 체제용 모든 I/O 키트 장치 드라이버를 생성하는 독점적인 프로그래밍 언어로 채택되었다.[8] 애플 엔지니어들은 표준 C++의 예외, 다중 상속, 템플릿 및 런타임 타입 정보 기능이 고성능, 다중 스레드 커널에서 사용하기에 불충분하거나 충분히 효율적이지 않다고 느꼈다.[9]

각주

[편집]
  1. “EC++ Rationale”. 
  2. EC++ Questions and Answers
  3. “Embedded and Extended Embedded C++”. 2013년 5월 21일에 원본 문서에서 보존된 문서. 2012년 12월 9일에 확인함. 
  4. “IAR Systems - Compilers and debuggers”. 《IAR Systems website》. 
  5. “Embedded C++ compiler technology”. 《Tasking website》. 2009년 1월 1일에 원본 문서에서 보존된 문서. 
  6. “Green Hills Optimizing C/C++/EC++ Compilers”. 《Green Hills Software website》. 2008년 10월 25일에 원본 문서에서 보존된 문서. 
  7. “What do you think of EC++?”. 《비야네 스트롭스트룹의 FAQ》. 
  8. “What is Mac OS X?”. 《Amit Singh》. 2019년 4월 19일에 원본 문서에서 보존된 문서. 2015년 3월 4일에 확인함. 
  9. “The libkern C++ Runtime”. 《IOKit Device Driver Design Guidelines》. 

외부 링크

[편집]