1.12 C および C++ ライブラリでの入出力関数のカスタマイズ

高レベルの fscanf()fprintf()、低レベルの fputc()ferror()、C++ オブジェクト std::cout などの入出力ライブラリ関数は、ターゲットに依存しません。ただし、高レベルのライブラリ関数は、低レベルの関数を呼び出すことによって入出力を実行します。これらの低レベル関数は、ターゲット依存のシステム入出力関数を呼び出します。

入出力のターゲットを変更するには、以下を実行できます。
  • 高レベルのライブラリ関数を避ける
  • 低レベルのライブラリ関数を再定義する
  • システム入出力関数を再定義する
低レベルのライブラリ関数を再定義するのとシステム入出力関数を再定義するのとでどちらが良い選択であるかは、何を使用するかによって変わります。たとえば、UART は一度に単一の文字を書き込んでデフォルトの fputc() でバッファ処理が使用されるため、バッファを使用せずにこの関数を定義することは UART にとって適している場合があります。しかし、バッファ操作が可能な場合は、システム入出力関数を再定義する方がさらに適切である場合もあります。
関連する概念
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.13 C および C++ ライブラリ内での低レベル関数のターゲット依存関係
1.6.5 C ライブラリ関数の直接セミホスティング依存関数
1.6.6 C ライブラリ関数の間接セミホスティング依存関数
1.7.1 C ライブラリを使用しないアプリケーションの作成
4.36 _sys_close()
4.37 _sys_command_string()
4.38 _sys_ensure()
4.40 _sys_flen()
4.41 _sys_istty()
4.42 _sys_open()
4.43 _sys_read()
4.44 _sys_seek()
4.45 _sys_tmpnam()
4.46 _sys_write()
4.8 _fisatty()
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.