Написано ли в стандарте, что EOF
должно быть отрицательным? Наоборот, WEOF
не обязательно должен быть отрицательным. Зачем? Ситуация для wchar_t
не должен быть каким-либо образом отличается от обычного char
(кроме случаев, когда автоматическое продвижение от char
к int
играет роль), так как определение wchar_t
, как char
прекрасно подходит со стандартом. Поэтому должны применяться аналогичные правила.Должен ли стандарт требовать отрицательного значения EOF?
Некоторые цитаты из ссылки GLibC:
если
wchar_t
определяется какchar
типwint_t
должен быть определен какint
в связи с продвижением параметра.
было бы правомерно определить
wchar_t
вchar
Что такое ** ** обоснование для этого? Почему WEOF не должен быть отрицательным? –
@IgorLiferenko: Нет никакого обоснования; это исторически то, что ожидалось, и стандарт сказал это, в 1989 году и с тех пор. Это делает знак «EOF» отличным от действительных значений символов, возвращаемых 'getchar()' и друзьями, конечно. –
@JonathanLeffler Просто прекратите говорить об истории. Вы верите, что эти люди были глупыми? Я пытаюсь понять истинную причину. –