В настоящее время я читаю новый проект стандарта C23 (N3088) и заметил, что в §5.2.4.1 стандарта говорится:
Реализация должна иметь возможность транслировать и выполнять программу, которая использует, но не превышает следующие ограничения для этих конструкций и сущностей: ... 32767 байт в объекте (только в размещенной среде)
Это было число в ANSI C/C89, а начиная с C99 оно было увеличено до 65535 — в чем причина понизить его до исходного значения?
Я пытался найти ссылки на него здесь и в Журнале документов WG 14, но ничего не нашел.
Изменение было отменено, так что ptrdiff_t
, который должен быть подписан, может иметь ширину только 16 бит, но при этом представлять разницу в байтах между началом и концом всех объектов в реализации, особенно встроенных. С этими требованиями объекты в реализации не должны быть больше 32767 байт.
См. предложение N2808 , а также обсуждение совместимости C/C++ в N2883.
Что объясняет его. Интересный выбор, чтобы отменить предыдущее изменение. Спасибо за ответ и ссылки!