1.13 C および C++ ライブラリ内での低レベル関数のターゲット依存関係

高レベルの C および C++ ライブラリ入出力関数は、低レベルの関数を基盤としています。低レベル関数バージョンを独自に定義する場合は、高レベル関数のライブラリバージョンを直接使用できます。

以下の表は、高レベル関数の低レベル関数への依存関係を示しています。
fgetc()__FILE を使用しますが、fputc()__FILE および ferror() を使用します。

__stdin__stdout を定義してからでないと、それに関連付けられた高レベル関数は使用できません。このことは、fgetc()fputc() などの他の関数の再実装が __stdin__stdout に格納されたデータを参照していない場合にも当てはまります。
表のヒント:
  1. __FILE:ファイル構造体。
  2. __stdin__FILE 型の標準入力オブジェクト。
  3. __stdout__FILE 型の標準出力オブジェクト。
  4. fputc():ファイルに文字を出力します。
  5. ferror():ファイルの入出力中に累積されたエラーステータスを返します。
  6. fgetc():ファイルから文字を取得します。
  7. fgetwc()
  8. fputwc()
  9. __backspace():ファイルポインタを前の文字に移動します。
  10. __backspacewc()

表 1-9 入出力依存

高レベル関数 下位オブジェクト  
  1 2 3 4 5 6 7 8 9 10
fgets x - - - x x - - - -
fgetws x - - - - - x - - -
fprintf x - - x x - - - - -
fputs x - - x - - - - - -
fputws x - - - - - - x - -
fread x - - - - x - - - -
fscanf x - - - - x - - x -
fwprintf x - - - x - - x - -
fwrite x - - x - - - - - -
fwscanf x - - - - - x - - x
getchar x x - - - x - - - -
gets x x - - x x - - - -
getwchar x x - - - - x - - -
perror x - x x - - - - - -
printf x - x x x - - - - -
putchar x - x x - - - - - -
puts x - x x - - - - - -
putwchar x - x - - - - x - -
scanf x x - - - x - - x -
vfprintf x - - x x - - - - -
vfscanf x - - - - x - - x -
vfwprintf x - - - x - - x - -
vfwscanf x - - - - - x - - x
vprintf x - x x x - - - - -
vscanf x x - - - x - - x -
vwprintf x - x - x - - x - -
vwscanf x x - - - - x - - x
wprintf x - x - x - - x - -
wscanf x x - - - - x - - x

fgetc()fputc()、および __backspace() を再実装する場合は、fopen() および関連する関数で __FILE 構造体に ARM レイアウトが使用されていることに注意して下さい。独自のバージョンの __FILE 構造体を定義する場合も、fopen() および関連する関数の再実装が必要になる場合があります。
関連する概念
1.14 C ライブラリ printf ファミリ関数
1.15 C ライブラリ scanf ファミリ関数
1.16 C ライブラリで高レベルライブラリ関数の直接使用を有効化するための低レベルライブラリ関数の再定義
1.17 C ライブラリ関数 fread()、fgets()、および gets()
1.18 C ライブラリでの __backspace() の再実装
1.19 C ライブラリでの __backspacewc() の再実装
1.20 C ライブラリでのターゲットに依存するシステム入出力関数の再定義
関連する参考文書
1.12 C および C++ ライブラリでの入出力関数のカスタマイズ
関連情報
ISO C Reference
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.