Многие функции возвращают значение и также выполняют побочные эффекты, но они часто используются только для своих побочных эффектов.
Например, printf()
печатает вывод, а также возвращает количество напечатанных символов,Но в большинстве случаев возвращаемое значение неинтересно, поэтому мы нигде его не назначаем.fclose()
возвращает индикатор успеха, но обычно программа ничего не может сделать, если она терпит неудачу, поэтому они не проверяют результат.
Было бы утомительно писать что-то вроде:
(void)printf(...);
(void)fclose(f);
все время, поэтому компиляторы обычно не предупреждают о вызове не пустых функций без использования результата.
В некоторых случаях это может быть проблемой.Есть некоторые функции, в которых вы действительно должны использовать возвращаемое значение, но это распространенная ошибка - не использовать его.Например, realloc()
возвращает новый указатель, но многие начинающие просто предполагают, что он всегда будет изменять размер выделения, на которое указывает старый указатель.
Некоторые IDE, вероятно, имеют списки функций, о которых следует предупредить об этомпричина.Но компиляторы, как правило, не так точны.