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

标签 c gcc

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/

相关文章:

gcc - 如何通过库名找到库的文件名?

c++ - 未定义引用 [USRP] [UHD]

我可以使用宏而不是递归来避免段错误吗?

c++ - 在 gcc 中将二维数组初始化为 0 时的值不正确

c - PIC32 SPI 不工作

c - 尝试为结构中的字符串分配内存时出现段错误

gcc - GCC/ARM 上的快速除法

c - 为什么gcc在arm汇编中分配了更多的堆栈?

C++读取大量文件的一小部分

c++ - graphics.h 没有输出