2.4.5. スタンドアロン C ライブラリ関数

このセクションの後半では、非初期化ライブラリで利用できるインクルードファイルおよびそのファイルに含まれている関数について説明します。 一部の利用不能な関数も、それらが依存しているライブラリ関数を再実装することで利用できるようになります。

alloca.h

このファイルにリストされている関数は、ライブラリ初期化をしないと使用できません。 手順については、C ライブラリを使用したアプリケーションの作成を参照して下さい。

assert.h

このファイルにリストされている関数は、高レベル stdio__rt_raise()、および _sys_exit() 関数を必要とします。 詳細については、エラー通知、エラー処理、プログラム終了処理のカスタマイズを参照して下さい。

ctype.h

このファイルにリストされている関数は、locale 関数を必要とします。

errno.h

このファイル内の関数は、ライブラリ初期化や関数の再実装をしなくても使用できます。

fenv.h

このファイルの関数は、ライブラリ初期化をしなくても使用できます。ただし、__rt_raise() の再実装が必要です。

float.h

このファイルにはコードは含まれていません。 このファイル内の定義は、ライブラリ初期化も関数の再実装も必要としません。

inttypes.h

このファイルにリストされている関数は、locale 関数を必要とします。

limits.h

このファイル内の関数は、ライブラリ初期化や関数の再実装をしなくても使用できます。

locale.h

setlocale() 関数は、locale 関数を使用する関数を呼び出す前に呼び出します。 以下に例を示します。

setlocale(LC_ALL, "C")

以下の関数とデータ構造体については、locale.h の内容を参照して下さい。

  • setlocale() は、カテゴリと locale 引数の指定に従って適切なロケールを選択します。

  • lconv は、現在のロケールの規則に従って数値形式を設定するために locale 関数によって使用される構造体です。

  • localeconv() は、lconv 構造体を作成し、この構造体を指すポインタを返します。

  • _get_lconv() は、パラメータによって指定された lconv 構造体に値を設定します。 この ISO 拡張は、ライブラリ内部のスタティックデータを不要にします。

locale.h ファイルには、locale 関数と共に使用される定数宣言も含まれています。 詳細については、アセンブラマクロによるロケールと CTYPE のカスタマイズを参照して下さい。

math.h

このファイルの関数を使用するには、まず _fp_init() を呼び出し、__rt_raise() を再実装する必要があります。

setjmp.h

このファイルの関数は、ライブラリ初期化や関数の再実装をしなくても使用できます。

signal.h

このファイルにリストされている関数は、ライブラリ初期化をしないと使用できません。 ライブラリの初期化を必要とするアプリケーションのビルドについては、C ライブラリを使用したアプリケーションの作成を参照して下さい。

__rt_raise() は、エラーおよび終了処理用に再実装できます。 詳細については、エラー通知、エラー処理、プログラム終了処理のカスタマイズを参照して下さい。

stdarg.h

このファイルにリストされている関数は、ライブラリ初期化や関数の再実装をしなくても使用できます。

stddef.h

このファイルにはコードは含まれていません。 このファイル内の定義は、ライブラリ初期化も関数の再実装も必要としません。

stdint.h

このファイルにはコードは含まれていません。 このファイル内の定義は、ライブラリ初期化も関数の再実装も必要としません。

stdio.h

これらの関数には、以下の依存性または制限が適用されます。

  • printf()scanf()puts()fgets()fread()fwrite()perror() などの高レベル関数は、それより低レベルの stdio 関数である fgetc()fputc()__backspace() に依存します。 スタンドアロン C ライブラリの使用時には、これらの低レベル関数を再実装する必要があります。

    ただし、先頭に _sys_ が付いた関数(_sys_read() など)は、ライブラリ初期化を必要とするため、スタンドアロン C ライブラリの使用時には再実装することはできません。

    詳細については、入出力関数のカスタマイズを参照して下さい。

  • printf() および scanf() ファミリ関数は locale を必要とします。

  • remove() および rename() 関数はシステム固有の関数であるため、ユーザのアプリケーションでは使用できない可能性があります。

stdlib.h

このファイルのほとんどの関数は、ライブラリ初期化または関数の再実装をしなくても使用できます。 以下の関数は、適切にインスタンス化されている他の関数に依存します。

  • ato*()は、locale を必要とします。

  • strto*()は、locale を必要とします。

  • malloc()calloc()realloc()free() は、ヒープ関数を必要とします。

  • atexit() は、C ライブラリなしでアプリケーションをビルドする場合には利用できません。

string.h

このファイルの関数は、ライブラリ初期化をしなくても使用できます。ただし、locale を必要とする strcoll() および strxfrm() を除きます。

time.h

  • mktime() および localtime() は即座に使用できます。

  • time() および clock() は、システム固有の関数であるため、再実装しないと使用できない場合があります。

  • asctime()ctime()、および strftime() は、locale を必要とします。

wchar.h

1994 年に『標準追補 1』によって ISO C 標準に追加されたワイドキャラクタライブラリ関数。

  • ワイドキャラクタ出力および書式設定文字列、swprintf()vswprintf()swscanf()、および vswscanf() のサポート。

  • すべての変換関数(btowcwctobmbrtowcwcrtomb など)は、locale を必要とします。

  • wcscoll および wcsxfrm は、locale を必要とします。

wctype.h

1994 年に『標準追補 1』によって ISO C 標準に追加されたワイドキャラクタライブラリ関数。このライブラリ関数は、locale を必要とします。

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