私はカーニハンのCプログラミング本を読んでいて、出くわしputcましfputcた。両者の違いや、いつ使用されるのかよくわかりませんでした。このトピックを扱ったStackOverflowの投稿をいくつか見つけましたが、それでも不明です。
ここで述べたように(putcにはstdoutが必要ですが、vs puts):
Kernighanの本によると、マクロと
putc同等ですfputcがputc、マクロとして実装でき、putcそのストリーム引数を複数回評価する可能性があります。との違いは
putc、fputcを使用するputcと、ストリーム引数を複数回評価する必要がある可能性があるため、本質的に安全ではないマクロバージョンを実行するリスクがあることです。これは、ほとんどの人が気付いていないために気をつけていない合併症を引き起こすので、fputc使用することをお勧めします。fputcのマクロにはこの問題はありません。
質問:
putcマクロとして実装できますが、同じことを行う際の問題は何fputcですか?2番目のステートメントは、いくつかの合併症と安全性の問題について言及しています。それらは何ですか?
putcその引数を複数回評価します。それで、議論を評価することと比較してそれがもたらす長所または短所は何ですか。