C - 是否有必要检查freopen返回值?

SRo*_*mes 0 c gcc

freopen的签名是 FILE * freopen ( const char * filename, const char * mode, FILE * stream )

根据文档,返回值与stream设置的值相同.所以,我的代码已经检查stream != 0,我是否需要检查返回值?怎么可能stream == 0,但retval != 0?如果我不需要同时检查两者,如果我不检查retval,为什么gcc会给我一个警告?

安静的gcc,是不是好简单地做:stream = freopen(filename, mode, stream); if (!stream) {...})

Ran*_*832 5

如果它失败了,它不会将原始流变量(它没有引用,因为参数FILE *不是FILE **)神奇地设置为NULL,所以你需要检查返回值.