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

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

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

    assert マクロの動作は、直近の #include <assert.h> の行により定義された演算の条件によって異なります。assert マクロの動作の詳細については、「1.48 プログラム終了および assert マクロ」を参照して下さい。
  • 以下の関数は、EOF (-1) ~ 255(境界値を含む)の範囲内にある文字の値をテストします。
    • isalnum()
    • isalpha()
    • iscntrl()
    • islower()
    • isprint()
    • isupper()
    • ispunct()
  • POSIX に完全準拠する remquo()remquof()、および remquol() の各関数は、xy で除算した場合の剰余を返し、除算の商をポインタ *quo に格納します。実装によって定義される整数値は、格納される商のビット数を定義します。ARM C ライブラリでは、この値は 4 に設定されます。
  • mathlib エラー処理に関して、C99 の動作がデフォルトで有効になっています。

    RVCT 4.0 では、この動作はデフォルトで有効ではありませんが、アセンブリ言語で IMPORT __use_c99_matherr を使用するか、C で #pragma import __use_c99_matherr を使用することにより有効になります。
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.