3.5. microlib でサポートされていない ISO C 機能

このセクションでは、microlib でサポートされていない ISO C90 の主な機能について説明します。

ワイドキャラクタおよびマルチバイトのサポート

ワイドキャラクタまたはマルチバイト文字列を扱う機能は、すべて microlib でサポートされていません。 これらを使用すると、リンクエラーが生成されます。 例えば、mbtowc()wctomb()mbstowcs()wcstombs() などです。 標準追補 1 で定義されている機能は、すべて microlib でサポートされていません。

オペレーティングシステムとのやりとり

オペレーティングシステムとやりとりする機能は、すべて microlib でサポートされていません。 例えば、abort()exit()atexit()clock()time(), system()getenv() などです。

ファイルの入出力

ファイルポインタを使用する stdio の機能はすべて、実装された場合にエラーを返します。 ただし、stdinstdout、および stderr の 3 つの標準ストリームは、この機能の例外です。

設定可能なロケール

デフォルトの C ロケールのみ使用できます。

シグナル

signal() 関数と raise() 関数は存在していますが、microlib はシグナルを生成しません。 ただし、プログラムが明示的に raise() を呼び出す場合は、この機能の例外です。

浮動小数点のサポート

浮動小数点のサポートは、IEEE 754 に準拠していません。

予測不能な出力を生成する演算は、以下のとおりです。

  • NaN、無限大、または非正規化数の実行

  • 正しい IEEE 754 の規則に従うと、不正確な結果以外によっても IEEE 例外が発生します。 ただし、microlib では IEEE 例外が発生しませんが、代わりに予測不能な結果を返します。

さらに、ゼロの符号が microlib によって重要として扱われずに、予測不能な出力を生成します。

位置非依存およびスレッドセーフコード

microlib には再入可能なバリアントがありません。 microlib では、スレッドセーフでないコードに対して保護するための相互排除関数のロックは提供していません。 microlib の使用は、FPIC コンパイルモードまたは RWPI コンパイルモードと互換性がありません。ROPI コードは microlib とリンクできますが、最終的なバイナリは全体として ROPI に準拠していません。

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential