Skip to main content

IAR Embedded Workbench for Arm 9.70.x

printfのフォーマッタ

このセクションの内容:

printf 関数は、 _Printf というフォーマッタを使用します。フルバージョンのフォーマッタはサイズが非常に大きく、多くの組み込みアプリケーションで不要な機能が用意されています。メモリの消費を減らすため、3つのより小さい代替バージョンも用意されています。wprintf派生形は影響を受けない点に注意してください。

以下の表に、各種フォーマッタの機能の概要を示します。

フォーマット機能

極小

小/

SmallNoMb†

大/

LargeNoMb†

Full/ FullNoMb†

基本指定子cdiopsuXx%

Yes

Yes

Yes

Yes

マルチバイト文字サポート

No

Yes/No

Yes/No

Yes/No

浮動小数点数指定子aA

No

No

No

Yes

浮動小数点数指定子eEfFgG

No

No

Yes

Yes

変換指定子n

No

No

Yes

Yes

フォーマットフラグ+-#0、スペース

No

Yes

Yes

Yes

サイズ修飾子hlLstZ

No

Yes

Yes

Yes

フィールド幅、精度(*を含む)

No

Yes

Yes

Yes

long longのサポート

No

No

Yes

Yes

wchar_tのサポート

No

No

No

Yes

表72 printfのフォーマッタ 


NoMbは、マルチバイトなしという意味です。

フォーマット文字列が文字列リテラルの場合、コンパイラはprintfへの直接の呼び出しでどのフォーマット機能が必要かを自動的に検出することができます。この情報はリンカに渡され、すべてのモジュールからの情報と組み合わせてアプリケーションに適切なフォーマッタが選ばれます。ただし、フォーマット文字列が変数であったり、呼び出しが関数ポインタを介した間接的なものの場合、コンパイラは解析を実行できず、リンカはフルのフォーマッタを選択することになります。この場合、自動的に選択されたprintfフォーマッタをオーバライドすることをお勧めします。

f0db_IDE_icon.pngIDE で自動的に選択された printf フォーマッタをオーバライドするには、以下の手順に従います。
  1. [プロジェクト]>[オプション]>[一般オプション] を選択して[オプション]ダイアログボックスを開きます。

  2. [ライブラリオプション]ページで、適切なフォーマッタを選択します。

f120_CLI_icon.pngコマンドラインから自動的に選択された printf フォーマッタをオーバライドするには、以下の手順に従います。
  • 以下のILINKコマンドラインオプションのいずれかを使用します。

    ‑‑redirect _Printf=_PrintfFull
    ‑‑redirect _Printf=_PrintfFullNoMb
    ‑‑redirect _Printf=_PrintfLarge
    ‑‑redirect _Printf=_PrintfLargeNoMb
    ‑‑redirect _Printf=_PrintfSmall
    ‑‑redirect _Printf=_PrintfSmallNoMb
    ‑‑redirect _Printf=_PrintfTiny
    ‑‑redirect _Printf=_PrintfTinyNoMb

コンパイラがマルチバイトサポートを認識しない場合は、それを有効にできます。

注意

[プロジェクト]>[オプション]>[一般オプション]>[ライブラリオプション1]>[マルチバイトサポートの有効化]を選択します。

危険

リンカオプション--printf_multibytesを使用します。