LINUX.ORG.RU

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

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

И не повод в каждой строчке кастовать по несколько переменных.

А и не надо кастовать, надо нормально проектировать софт чтобы таких мест не возникало. У меня как-то получается. Да, есть противные места, как уже упомянутый argc и значения возврата всяких read() write() recv() send() и подобного, их иногда приходится кастовать и перезаписывать в переменную нормального unsigned типа, с которой уже и работать. По-хорошему это всё те же недоработки их 70-х 80-х, когда люди ещё не до конца осознавали необходимость охватывать кодом все сценарии его исполнения, а не только предположительно используемые. По-нормальному read() должен иметь прототип примерно такой

int read(int fd, void *buf, size_t bufsz, size_t *readsz);
и значение возврата использовать исключительно для сигнализации об ошибке.

Это просто не добрались ещё теоретики.

Нет, ты просто не понимаешь смысл того варнинга. Вот int64 и double варнинг уже может быть, но не из-за знака.

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

И не повод в каждой строчке кастовать по несколько переменных.

А и не надо кастовать, надо нормально проектировать софт чтобы таких мест не возникало. У меня как-то получается. Да, есть противные места, как уже упомянутый argc и значения возврата всяких read() write() recv() send() и подобного, их иногда приходится кастовать и перезаписывать в переменную нормального unsigned типа, с которой уже и работать. По-хорошему это всё те же недоработки их 70-х 80-х, когда люди ещё не до конца осознавали необходимость охватывать кодом все сценарии его исполнения, а не только предположительно используемые. По-нормальному read() должен иметь прототип примерно такой

int read(int fd, void *buf, size_t bufsz, size_t *readsz);
и значение возврата использовать исключительно для сигнализации об ошибке.