LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Нет, в большинстве случаев в таких местах signed стоит только потому, что оно «int» из трёх букв, которое проще всего написать, не задумываясь о последствиях.

Скажем ftell long не просто так возвращает, отрицательный результат там означает ошибку.

Это было весьма сомнительное решение. Как и знаковый off_t позже (да, кстати, ftell если что по сути deprecated, надо ftello использовать, но это так, к теме не относится). Я бы сказал, тут первонисточник проблемы в том, что данные и код ошибки засунули в одну переменную, не дав никаких явных способов их отличить.

Аналогичная проблема имеется с read()/write() - на 32-битной платформе будет UB, если попытаться записать разом в файл больше 2гб (что вполне легитно само по себе, но приходится костылить нарезку объёма на куски меньше ssize_t).

Исходная версия firkax, :

Нет, в большинстве случаев в таких местах signed стоит только потому, что оно «int» из трёх букв, которое проще всего написать, не задумываясь о последствиях.

Скажем ftell long не просто так возвращает, отрицательный результат там означает ошибку.

Это было весьма сомнительное решение. Как и знаковый off_t позже (да, кстати, ftell если что по сути deprecated, надо ftello использовать, но это так, к теме не относится).