我正在编写一些生成大量代码的代码
ignoring return value of ‘size_t fwrite(const void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
使用 g++ 编译时出现警告,我想知道实际记录和处理大量单独顺序的返回值的最佳编程模式fwrite
s(即不相同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 ...
Update:我删除了 c++ 标签,因为此代码实际上只是使用 g++ 编译的 c,因此需要基于 c 的解决方案来与代码库的其余部分保持一致。