【发布时间】:2011-12-09 15:41:59
【问题描述】:
我在 C 中具有假定标准输入已打开的函数。我想在它前面添加一个断言,以确保 stdin 没有被任何人关闭。如何检查 stdin 没有被任何人关闭?
assert(is_open(stdin));
【问题讨论】:
-
你为什么要关心这个 - 是什么让你认为你的代码中的其他东西愚蠢到足以关闭标准输入?
-
@JonathanLeffler 我在一家公司工作。可以编写一个函数 A() 在文件完成时打开和关闭文件。其他一些程序员可以将 STDIN 作为参数传递。如果我的函数在 A() 函数之后调用,它将找不到 STDIN。这就是为什么。
-
@DanParadox:那么你的同事应该采用这样的原则:一个函数应该关闭一个
FILE*,当且仅当它打开它。 -
函数 A() 不能通过标准输入,因为它在函数启动之前是打开的。