Когда C или C++ намеренно сделали себя обратно несовместимыми?

Когда C или C++ намеренно сделали себя обратно несовместимыми?
Когда C или C++ намеренно сделали себя обратно несовместимыми? - jcotten @ Unsplash

Контекст (можно пропустить)

Я буду делать презентацию по Python и затрону тему решения V3 о намеренной обратной несовместимости, и как это повлияло на Python в долгосрочной перспективе. В частности, я рассмотрю их решение убрать ключевое слово print, потому что это решение не было строго необходимым. [ насколько я знаю ]

Однако, чтобы быть справедливым к языку, я хочу рассмотреть, где C и C++ делали подобное в своем прошлом, где они намеренно выпускали спецификацию, которая при внедрении определенно ломала существующий код. Я пытался расспросить об этом, но нашел только один конкретный случай:

Почему именно было удалено удобство C++, не требующее второго объявления?

Однако этот пример кажется настолько эзотерическим, что его вряд ли можно считать актуальным. У меня сложилось впечатление, что поломки на самом деле довольно часты при каждом выпуске C++, просто мне не ясно, являются ли эти поломки ошибками/ошибками, или скорее намеренными поломками/депрекациями, внесенными в спецификацию.


Актуальный вопрос:

Относительно C или C++

  • Каков случай, когда в спецификацию было внесено изменение, заведомо нарушающее обратную совместимость?
    • [ Для ясности, где старый код перестает быть действительным или компилируемым в обновленной спецификации ]

Необязательные детали, представляющие интерес:

  • Чем было обосновано это изменение?
  • Было ли это абсолютно необходимо?
  • Как компиляторы в целом отнеслись к изменению?
    • Например, были ли введены флаги совместимости? Были ли добавлены предупреждения компилятора до того, как изменение было окончательно внедрено?
  • Были ли какие-либо значительные негативные внешние эффекты, которые возникли в результате этого изменения?
    • Например, многолетние усилия по приведению большой библиотеки в соответствие со спецификацией?
  • Оглядываясь назад, было ли принятое решение в конечном итоге лучшим, или те, кто участвовал в изменении, выразили какое-либо сожаление?
    • Python, например, кажется, в целом жалуется на то, как он справился с обновлением до V3. https://python3statement.org/

Спасибо.

В (проекте) международных стандартов все изменения перечислены в приложении C (информативном) Совместимость [diff] .

Как компиляторы в целом справились с этим изменением?

Популярные компиляторы C++ имеют опции для ориентации на определенные версии языка, например, передача аргумента командной строки для вызова


LetsCodeIt, 20 января 2023 г., 17:08