В каких отношениях MSVC не соответствует стандартам? - PullRequest
3 голосов
/ 18 апреля 2010

Я читал, что MSVC не полностью соответствует стандарту ISO C ++ (немецкая Википедия и несколько сайтов Tech).

  • Каким образом C ++ не соответствует стандартам?

Ответы [ 3 ]

2 голосов
/ 18 апреля 2010

На самом деле ни один компилятор не является полностью совместимым со стандартом, но MSVC приобрел репутацию за реализацию всего, что стандарт явно не указал явно глупым и непереносимым способом.

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

Но MSVC все еще очень ленив, когда дело доходит до указания кода, который не соответствует стандарту C ++ (дажев самых строгих настройках), поэтому перенос кода из MSVC во что-либо еще всегда вызывает огромную боль.

Но все еще есть много недостатков / ошибок / и т. д., например, в отличие от GCC, MSVC позволит вам изменитьитератор set / map.

1 голос
/ 18 апреля 2010

Прошло много времени с тех пор, как я изучал это, но библиотека C ++, над которой я работаю, использует довольно много шаблонного метапрограммирования (ничего ужасно сложного, но все еще выходящего за рамки простейших уровней), и довольно долгое время не компилируется под MSVC из-за ошибок или отсутствия функциональности в коде разрешения их шаблонов, хотя он прекрасно работает в GCC и компиляторе Intel C ++.

Не думаю, что мы пробовали это в последних двух версиях MSVC, поэтому они могли исправить эти ошибки.

Кроме того, IIRC, MSVC не включает поддержку информации о типах во время выполнения по умолчанию (по соображениям производительности), и поддержка для этого требуется стандартом C ++.

1 голос
/ 18 апреля 2010

Ну, я думаю, это зависит от вашего определения соответствия. Есть несколько вещей, которые не были реализованы в стандарте почти любой компиляторской компанией (несколько предложений из 98-й версии и определения шаблонов в файлах реализации). MS несколько расширил язык. Однако, если вы пишете код на базовом c ++ без расширений или библиотек MS, он, скорее всего, будет переносимым на другой компилятор с очень и очень минимальной работой (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...