freopen 的签名是FILE * freopen (const char * filename, const char * mode, FILE * stream)
根据文档,返回值与 stream
设置的相同。所以,我的代码已经检查了stream != 0
,我还需要检查返回值吗? stream == 0
怎么可能 retval != 0
?如果我不需要检查两者,为什么 gcc 在我不检查 retval 时会给我警告?
为了安静 gcc,可以简单地做:stream = freopen(filename, mode, stream);如果 (!stream) {...})
?
最佳答案
如果失败,它不会神奇地设置原始流变量(它没有引用,因为参数是 FILE *
而不是 FILE **
)为 NULL,因此您确实需要检查返回值。
关于C - 是否有必要检查 freopen 的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716013/