Я работаю над кодом, который генерирует много
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, чтобы сохранить остальную часть кода.