Nios® V プロセッサー・ソフトウェア開発者ハンドブック

ID 743810
日付 7/08/2024
Public
ドキュメント目次

7.11.5.1. 'asnprintf()'の定義

newlib は同じコアエンジンに基づいた 22 種類の printf() バリアントを実装しており、それぞれがわずかに異なるインターフェイスを持っています。C 標準で指定されているもの、Posix で指定されているもの、GNU 拡張機能であるもの、newlib 拡張機能のものもあります。newlib libcのウェブページには、それぞれの標準に準拠する関数が文書化されています。

libc の詳細については、Red Hat newlib C Library ウェブページを参照してください。

これら 22 種類のバリアントは、デザインの選択肢を 4 次元空間で満たしています。
  • Plain vs varargs
  • File vs buffer output
  • Output buffer management alternatives:
    • Fixed buffer, unknown length
    • Fixed buffer, known length
    • malloc()ed-and-returned buffer
    • realloc()-able buffer
  • Plain vs no-floating-point formatting support

バリアントへのマップは、プレフィックス文字のセットです。

v*printf (mnemonic: v-for-varargs)

正規の printf() 関数は、フォーマット文字列内の各パーセント指定子に対して 1 つづつを含む、可変数の引数を受け取ります。これは、ユーザーにとっては便利ですが、可変数の引数を受け取り、通常の printf() ライブラリーを呼び出す前に何らかの付加価値を行うラッパー関数にとっては不便です。なぜなら C には、関数が可変数の引数を読み取り、それを可変数の引数を取る別の関数に渡すための便利で移植性のある方法が提供されていないためです。したがって、C ライブラリーは、プレーンな printf() 関数ごとに対して、可変引数ベクトル形式で追加の引数を受け入れる v*printf バリアントを提供しています。

「プレーンな」(可変数の引数) printf 関数は次のとおりです。
  • fprintf()
  • printf()
  • asprintf()
  • asnprintf()
  • snprintf()
  • sprintf()
  • fiprintf()
  • iprintf()
  • asiprintf()
  • asniprintf()
  • sniprintf()
  • siprintf()
固定数の引数 (vararg ベース) のバリアントは次のとおりです。
  • vprintf()
  • vasprintf()
  • vasnprintf()
  • vsprintf()
  • vsnprintf()
  • viprintf()
  • vasiprintf()
  • vasniprintf()
  • vsiprintf()
  • vsniprintf()
注: ニーモニックであるにもかかわらず、これらの関数は実際には整数のみ限定されるわけではありません。たとえば、unsigned、char、およびstring値もサポートしています。
上記のすべてのバリアントをひとまとめにすると、newlib でサポートされる printf() 関数の完全なリストは次のとおりです。
  • fprintf()
  • vprintf()
  • printf()
  • asprintf()
  • asnprintf()
  • snprintf()
  • sprintf()
  • vasprintf()
  • vasnprintf()
  • vsprintf()
  • vsnprintf()
  • fiprintf()
  • iprintf()
  • viprintf()
  • asiprintf()
  • asniprintf()
  • sniprintf()
  • siprintf()
  • vasiprintf()
  • vasniprintf()
  • vsiprintf()
  • vsniprintf()
  • dprintf, vdprintf: ファイル・ディスクリプターに出力します (FILE* に対して)。
  • dprintf, vdprintf: 上記の浮動小数点フォーマットを使用しないバージョン。
  • fwprintf, swprintf, vfwprintf, vswprintf, vwprintf, wprintf: ワイド文字をサポートするバージョン。

これらの printf() バリアントの詳細については、Red Hat newlib C Librayウェブページを参照してください。