【发布时间】:2009-02-20 13:32:55
【问题描述】:
我正在编写一些生成大量代码的代码
ignoring return value of ‘size_t fwrite(const void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
使用 g++ 编译时的警告,我想知道实际记录和处理大量单独顺序 fwrites 的返回值的最佳编程模式(即循环中的 fwrite 不同)
假设现在的代码是这样的:
fwrite (&blah, sizeof (blah), 1, fp);
// ... more code ...
fwrite (&foo, sizeof (foo), 1, fp);
// ... more code ...
我目前正在考虑这样的事情,但我可能难以清理文件指针:
if (fwrite (&blah, sizeof (blah), 1, fp) != 1) return someerrorcode;
// ... more code ...
if (fwrite (&foo, sizeof (foo), 1, fp) != 1) return someerrorcode;
// ... more code ...
我认为这种方法显然比嵌套更好,因为嵌套太快了:
if (fwrite (&blah, sizeof (blah), 1, fp) == 1) {
// ... more code ...
if (fwrite (&foo, sizeof (foo), 1, fp) == 1) {;
// ... more code ...
}
}
但是,对于这类事情,肯定已经建立了最佳实践模式吗?
当然,由于我主要研究这个以消除编译器警告,我可以将返回值分配给一个虚拟变量并忽略它,但我想先尝试以正确的方式进行操作。
dummy = fwrite (&blah, sizeof (blah), 1, fp);
// ... more code ...
dummy = fwrite (&foo, sizeof (foo), 1, fp);
// ... more code ...
更新:我已经删除了 c++ 标签,因为这段代码实际上只是使用 g++ 编译的 c,因此需要基于 c 的解决方案来与代码库的其余部分保持一致。
【问题讨论】: