printf文の使い方


【printf文の扱い】

HI-TECH Cコンパイラでは、printf文の扱いがちょっと特別になっています。
まず、標準ではstdioの低レベルI/O関数が組み込まれていないため、printf文や
puts文などの標準入出力関数は使えるようになっていません。

これを使えるようにするためには、低レベルI/O関数である、putch、getch関数を
作成する必要があります。
これは、標準入出力デバイスを一意に決めないようにしているためと思われます。
逆に、putchとgetch関数を特定のデバイス用に作れば、何でも標準入出力デバイス
にすることが可能だということです。

もうひとつ、printf文の扱いが特別になっていて、printf文を使うと全部の処理内容が
組み込まれるわけではなく、指定された文で使っている機能だけの処理部分が
組み込まれるようになっています。
こうなっているのは、生成されるコードサイズをできるだけ小さくするためです。

さらに、Liteモードでは、浮動小数の出力ができなくなっているようです。
したがって%21.fなどの指定でのfloatやdoubleの型の変数の出力はできません。

【putch、getch関数の作り方】

低レベル関数の作り方は、USARTを標準入出力デバイスとする場合の例が
サンプルとして用意されていますので、これを参考にすれば簡単にできます。
このサンプルは、
  「C:\Program Files\HI-TECH Software\PICC\PRO\9.65\samples\usart」の中の
「usart.c」として含まれています。
このソースの中身は下記のようになっています。
単純に内蔵のUSARTモジュールを使った1文字の送受信サブ関数になっています。
これを基にして液晶表示器への1文字表示関数に変更すれば、printf文で液晶
表示器を制御するこも可能になります。
もちろん別途液晶表示器の初期化関数は必要です。



【実際の例】

標準入出力関数の実際の使用例を示します。
下記は各種のデータ型に対して、printf文とputs文を試したものです。


この例題の実行結果をシミュレータで実行した結果は下記のようになります。





この結果からすると、printf文での
文字数指定は有効にならない
感じがします。







   目次ページへ