組み込みC++(EC++)は、組み込みシステム向けのC++プログラミング言語の方言です。これは、NEC、日立、富士通、東芝などの日本の主要CPUメーカーが主導する業界グループによって定義され、組み込みアプリケーションにおけるC++の欠点を克服することを目的としています。この取り組みの目標[ 1 ]は、C++言語の最も有用なオブジェクト指向機能を維持しつつ、コードサイズを最小限に抑え、実行効率を最大化し、コンパイラの構築を簡素化することです。公式ウェブサイトでは、その目標を「平均的なCプログラマーが理解しやすく使いやすいC++のサブセットを組み込みシステムプログラマーに提供すること」としています。[ 2 ]
組み込みC++は、C++の一部の機能を除外しています。
Green HillsやIAR Systemsなどのコンパイラでは、組み込みC++でISO/ANSI C++の特定の機能を有効にできます。IAR Systemsはこれを「拡張組み込みC++」と呼んでいます。[ 3 ]
EC++プログラムは、どのC++コンパイラでもコンパイルできます。しかし、EC++専用のコンパイラの方が最適化が容易な場合があります。
EC++専用のコンパイラは、以下のような企業から提供されています。
この言語は、多くの熟練した C++ プログラマーから不評を買っている。特に、ビャルネ・ストロヴストルップは、「私の知る限り、EC++ は死んでおり (2004 年)、そうでないとしても死ぬべきだ」と述べている。[ 7 ]実際、公式の英語 EC++ Web サイトは 2002 年以降更新されていない。それにもかかわらず、C++ の制限されたサブセット (Embedded C++ に基づく) がApple Inc.によって、人気の Macintosh、iPhone、iPad 製品の Apple の macOS、iPadOS、iOS オペレーティングシステム用のすべてのI/O Kitデバイス ドライバを作成するための唯一のプログラミング言語として採用されている。 [ 8 ] Apple のエンジニアは、標準 C++ の例外、多重継承、テンプレート、ランタイム型情報機能は、高性能マルチスレッドカーネルで使用するには不十分か、効率が十分ではないと感じていた。[ 9 ]