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