1.23.1 ARM C ライブラリが ISO C 仕様の要件を満たす方法

ISO 仕様では、一部実装者の選択に任せられている機能がありますが、その場合も実装の選択内容を文書化する必要があります。

汎用 ARM C ライブラリ実装のこの点について、以下に説明を示します。
  • マクロ NULL は整数定数 0 に展開されます。
  • プログラムによって予約済みの外部識別子が再定義されると、プログラムが標準ライブラリにリンクされた際にエラーが発生する可能性があります。プログラムが標準ライブラリにリンクされない場合、エラーは診断されません。
  • __aeabi_assert() 関数は、stderr にエラー診断の情報を出力し、その後 abort() 関数を呼び出します。
    *** アサートがエラーになりました:expression、file name、line number

    assert マクロの動作は、直近の #include <assert.h> の行により定義された演算の条件によって異なります。assert マクロの動作の詳細については、「1.8.5 プログラム終了および assert マクロ」を参照して下さい。
  • 以下の関数は、EOF (-1) ~ 255(境界値を含む)の範囲内にある文字の値をテストします。
    • isalnum()
    • isalpha()
    • iscntrl()
    • islower()
    • isprint()
    • isupper()
    • ispunct()
  • POSIX に完全準拠する remquo()remquof()、および remquol() の各関数は、xy で除算した場合の剰余を返し、除算の商をポインタ *quo に格納します。実装によって定義される整数値は、格納される商のビット数を定義します。ARM C ライブラリでは、この値は 4 に設定されます。
  • mathlib エラー処理に関して、C99 の動作がデフォルトで有効になっています。
関連する概念
1.23.4 ISO 準拠の C ライブラリ入出力の特性
1.8.5 プログラム終了および assert マクロ
関連する参考文書
1.23.2 mathlib エラー処理
1.23.3 C ライブラリの signal() 関数と追加の型引数によりサポートされる ISO 準拠のシグナルの実装
1.23.6  標準 C++ ライブラリの実装定義(Rogue Wave)
1.25 C および C++ ライブラリの命名規則
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.