Почему стандарт C23 уменьшает максимальный размер объекта, который должна поддерживать реализация?

В настоящее время я читаю новый проект стандарта C23 (N3088) и заметил, что в §5.2.4.1 стандарта говорится:

Реализация должна иметь возможность переводить и выполнять программу, которая использует, но не превышает следующие ограничения для этих конструкций и сущностей: ... 32767 байт в объекте (только в размещенной среде)

Это было число в ANSI C/C89, а начиная с C99 оно было увеличено до 65535 — в чем причина понизить его до исходного значения?

Я попытался найти какие-либо ссылки на него здесь и в журнале документов WG 14 , но ничего не нашел.

1 ответ

Изменение было отменено, так чтоptrdiff_t, который должен быть подписан, может иметь ширину только 16 бит, но при этом представлять разницу в байтах между началом и концом всех объектов в реализации, особенно встроенных. С этими требованиями объекты в реализации не должны быть больше 32767 байт.

См. предложение N2808 , а также обсуждение совместимости C/C++ в N2883 .

Другие вопросы по тегам