我正在阅读 Kernighan 的 C 编程书,偶然发现putc
了fputc
. 我不太明白两者之间的区别,也不明白什么时候可以使用另一个。我在 StackOverflow 上找到了一些涉及该主题的帖子,但仍不清楚。
如此处所述(putc 需要标准输出,而不是 puts):
根据 Kernighan 的书
putc
,等效于fputc
但putc
可以实现为宏,并且putc
可以多次评估其流参数。
putc
和之间的区别在于fputc
,使用putc
,您可能会运行本质上不安全的宏版本,因为它可能必须多次评估其流参数。这会导致大多数人没有意识到的并发症,因此不会提防,因此fputc
最好使用。fputc
的宏没有这个问题。
问题:
putc
可以实现为宏,但同样的问题是什么fputc
?第二个声明提到了一些并发症和安全问题。那些是什么?
putc
不止一次地评估它的论点。那么与评估论点相比,它有哪些优点或缺点。