yohhoyの日記

技術的メモをしていきたい日記

fputcとputc

C標準ライブラリでは、1文字ストリーム出力関数 fputc と putc(char版)、fputwc と putwc(wchar_t版)の2種類が提供される。両関数は機能的に等価。

マクロ展開によるトラブル回避のためputc/putwc利用は避け、常にfputc/fputwcを用いること。

putc()は、streamを一度以上評価するマクロとして実装されているかも知れないという点を除き、fputc()と同じである。

Man page of PUTS

putwc()関数あるいはマクロは、fputwc()と全く同じ動作をする。この関数はマクロとして実装されるかもしれないので、引き数が複数回評価されるかもしれない。この関数を使う理由はもはや存在しない。

Man page of FPUTWC

C99(N1256) 7.19.7.8/p2, 7.24.3.8/p2より引用。

The putc function is equivalent to fputc, except that if it is implemented as a macro, it may evaluate stream more than once, so that argument should never be an expression with side effects.

The putwc function is equivalent to fputwc, except that if it is implemented as a macro, it may evaluate stream more than once, so that argument should never be an expression with side effects.