Я работаю над кодом, который генерирует много
ignoring return value of ‘size_t fwrite(const void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result
предупреждения при компиляции с g ++, и я задаюсь вопросом о лучшем шаблоне программирования для фактической записи и обработки возвращаемого значения большого числа отдельных последовательных fwrite
с (т. Е. Не одинаковых 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, чтобы соответствовать остальной части кода.