Почему Microsoft по-прежнему поддерживает nothrownew.obj? - PullRequest
2 голосов
/ 29 ноября 2011

Согласно MSDN , Microsoft по-прежнему поставляет nothrownew.obj с библиотекой времени выполнения Visual C ++ 10 (Visual Studio 2010), так что пользователи могут ссылаться на нее и иметь нестандартное поведение "обычный" (not nothrow flavour) new возвращает ноль при ошибке выделения.Это нестандартное поведение восходит к Visual C ++ 6, который в настоящее время считается чрезвычайно старым.

Зачем это нужно?Я имею в виду, что они делают каждую новую версию компилятора все более совместимой со стандартами.Например, Visual C ++ 7 будет поддерживать «int по умолчанию», а Visual C ++ 9 - нет.И старого нестандартного поведения new можно легко добиться, слегка изменив код для использования nothrow аромата new - это просто и очень просто.

Почему этот параметр так важен, чтоMicrosoft все еще поддерживает это?

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Ну, это своего рода открытый вопрос, поскольку никто, кроме ответственного сотрудника Microsoft, не может сказать наверняка - если вообще. Итак, я откушу:

Полагаю, это для удобства:

  1. Microsoft сама может понадобиться в некоторых своих продуктах, и просто проще иметь ее вместе с инструментами компилятора.
  2. Microsoft может знать, что кому-то (скажем, крупному поставщику / приложению) она все еще нужна, и просто (или даже необходимо, если это зависит от компилятора) по-прежнему предоставлять ее.
  3. Microsoft может знать / предвидеть, что она по-прежнему "широко" используется в устаревших приложениях. Большой или маленький.
  4. "Это не больно", вполне возможно. Например, у Microsoft есть давняя история поддержки обратной совместимости в Windows (см. Блог Raymond Chens ), опять же, возможно, не всегда в лучшую сторону.
  5. Документация, тесты и т. Д. Должны быть изменены (или удалены, но все же).

То есть удалить его может быть еще труднее, чем просто сохранить его.

По крайней мере, им необходимо / должно предоставить устаревшее уведомление версию до ее удаления. Я не знаю, делали ли они это для VS2010 или какой-либо предыдущей версии.

2 голосов
/ 22 октября 2012

Потому что я сейчас (2012) портирую продукт из Visual C ++ 6.0 в Visual Studio 2010, и это очень помогает ускорить разработку. Мы также не будем переходить на Unicode в течение нескольких лет. Если бы Microsoft не предоставила функцию совместимости, я бы сам ее создал.

В качестве примечания мы являемся основным ISV в специализированной области. Если мы решим сменить ОС, вся индустрия, вероятно, изменится на. (До Windows мы также строили специализированную ОС.)

...