Embedded C++標準ライブラリ仕様策定のポイント
ANSI/ISO C++ ライブラリ仕様から、Embedded
C++ライブラリ仕様を策定した基本的なポイントは次の通りである。
- ANSI/ISO C++ 標準ライブラリ仕様と互換性を保つ(*)
(*) 但し、この限りでない部分もある。
詳細は5の「削除された機能とその理由」を参照のこと。
- 組込み用途に必要な最小限のセットとし、OS
や環境に依存するものは含めない。
- Embedded
C++言語仕様でサポートされていない仕様で記述されるライブラリは含めない
Embedded C++標準ライブラリの概要
Embedded C++標準ライブラリの機能概要は以下の通りである。
- OSや環境に依存するライブラリと wchar_t 型、long
double型についてのライブラリは含まない。
- C互換ライブラリのほとんどを含んでいる。
但し、(1)に該当するライブラリは除外する。
- テンプレートや例外など、Embedded
C++言語仕様でサポートされない機能で記述されるようなライブラリは除外する。
但し、stringライブラリ、複素数ライブラリ、ストリームライブラリは採用する。
除外・採用したライブラリとその理由
(1) OS や環境に依存するライブラリ
OSや環境に依存するライブラリは、本仕様を最小限のライブラリセットとするため除外した。具体的には、ファイルストリームライブラリ<fstream>や、<cstdio>内のFILE構造体を用いたファイル操作関数を削除した。また、地域化に関するライブラリも、環境に依存するため、Embedded
C++の仕様から除外した。
(2) wchar_t型やlong double型についてのライブラリ
wchar_t型やlong double型についてのライブラリは組込み用途にはほとんど使用されないため、除外した。
具体的には、winなどの多バイト文字用のストリームライブラリと、C互換の数学ライブラリでの、long
double用関数を除外した。
数学ライブラリに関して、標準のC++ライブラリ仕様では,float, double,
long double それぞれの型用の関数
(つまり3種類の関数)が提供されているが,Embedded C++ では,float と
double 用の関数のみを提供する。
(3) テンプレートや例外を用いたライブラリ
テンプレートを用いたライブラリである標準テンプレートクラスライブラリ(Standard
Template class Library)はEmbedded C++標準ライブラリから除外した。
テンプレートや例外を用いたライブラリはEmbeddedC++言語仕様で削除された機能であるため、(4)で説明する一部の例外を除き除外した。
(4) stringライブラリ、複素数ライブラリ、ストリームライブラリ
stringライブラリ、複素数ライブラリ、ストリームライブラリは、テンプレートを用いたライブラリであるが、幾つかの型についてのみ、専用化したクラスとして、Embedded C++ 標準ライブラリに採用している。
理由は、stringライブラリは一般的に使用されるライブラリであり、組込み用途にも有用であるためである。複素数ライブラリは、信号処理などの組込み用途での重要性が高まっているため採用した。ストリームライブラリは、デバッグに必要な最低限の入出力ライブラリであるため残した。このように、ユーザにとって重要であり、頻繁に使用するのは基本型について専用化した版を提供することで、使いやすくオブジェクト効率の良いライブラリを提供する方針である。
|