Я продолжаю читать о C99 и C ++ 11 и обо всех этих совершенно приятных вещах, которые добавляются к языковому стандарту и которые когда-нибудь могут быть полезны. Однако в настоящее время мы томимся в стране написания C ++ в Visual Studio.
Будет ли когда-либо добавлено что-либо из нового стандарта в Visual Studio, или Microsoft больше заинтересована в добавлении для этого новых вариантов C #?
Изменить: в дополнение к принятому ответу я нашел блог команды Visual C ++:
И конкретно этот пост в нем:
Очень полезно. Спасибо!
c++
visual-studio
visual-c++
c++11
c99
Колен
источник
источник
Ответы:
У MS есть серия публичных ответов на это, большинство из которых обвиняют своих пользователей. Как этот:
https://devblogs.microsoft.com/cppblog/iso-c-standard-update/
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345360
Это довольно печальное положение дел, но оно также имеет смысл, если вы подозреваете, что MS хочет заблокировать пользователей: из-за этого очень сложно переносить современный код на основе gcc в MSVC, что, по крайней мере, я считаю чрезвычайно болезненным.
Однако существует обходной путь: обратите внимание, что Intel гораздо более осведомлена об этом. компилятор Intel C может обрабатывать код C99 и даже имеет те же флаги, что и gcc, что значительно упрощает перенос кода между платформами. Также компилятор Intel работает в visual studio. Так что, отказавшись от MS COMPILER, вы все равно можете использовать MS IDE, которая, по вашему мнению, имеет какую-то ценность, и использовать C99 в свое удовольствие.
Честно говоря, более разумный подход - перейти на Intel CC или gcc и использовать Eclipse в своей среде программирования. По моему опыту, переносимость кода в Windows-Linux-Solaris-AIX и т. Д. Обычно важна, и, к сожалению, это совсем не поддерживается инструментами MS.
источник
Херб Саттер является председателем и активным членом комитета по стандартизации C ++, а также архитектором программного обеспечения Visual Studio for Microsoft.
Он является одним из авторов новой модели памяти C ++, стандартизированной для C ++ 0x. Например, следующие документы:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007 /n2197.pdf
иметь его имя на нем. Так что, я полагаю, включение C ++ 0x в Windows гарантировано, пока Х. Саттер остается в Microsoft.
Что же касается C99, включенного в Visual Studio лишь частично, я думаю, это вопрос приоритетов.
логическаяреализация в C99 в лучшем случае смехотворна ... См. Http://david.tribble.com/ text / cdiffs.htm для получения дополнительной информации)Итак, если бы я был Microsoft, зачем мне реализовывать функции, которые немногие люди когда-либо будут использовать, когда те же функции уже предлагаются на более активных языках сообщества, которые уже используются большинством людей?
Вывод?
C ++ 0x будет включен как расширение VS 2008 или в следующее поколение (поколения?) Visual Studio.
Функции C99, которые еще не реализованы, не появятся в ближайшие годы, если не произойдет чего-то драматического (страна, полная разработчиков C99, появится из ниоткуда?)
Изменить 2011-04-14
Судя по всему, «страна, полная разработчиков C99» уже существует: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^ _ ^
Тем не менее, последний комментарий на: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 , я думаю, достаточно ясен.
Изменить 2012-05-03
Херб Саттер пояснил, что:
Сообщение в блоге добавляет ссылки и дальнейшие объяснения этих решений.
Источник: http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
источник
restrict
Ключевое слово. В C ++ отсутствует масса замечательных функций C99, и это функции, которые я использую каждый день как программист на C.restrict
ключевого слова, вы все еще можете использовать в C ++, по-видимому: stackoverflow.com/questions/776283/… . . .Начиная с VC2013 preview 1 , поддерживаются C99, более разнообразный набор C ++ 11 и некоторые недавно представленные стандарты C ++ 14. Посетите официальный блог для получения дополнительных сведений: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in-vs2013-preview. aspx
Обновить:
Из https://news.ycombinator.com/item?id=9434483 (Стефан Т. Лававей, он же: STL поддерживает команду STL @VC):
Подробнее читайте в этом сообщении: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx .
источник
Я принимал участие в работе над ISO C ++ (2000–2005), и Microsoft внесла значительный вклад в этот язык. Нет сомнений, что они будут работать на C ++ 0x, но им потребуется немного больше времени, чем, скажем, Intel. Micosoft приходится иметь дело с более крупной кодовой базой, которая часто использует их собственные расширения. Это просто увеличивает длину тестовой базы. Тем не менее, в конечном итоге они будут поддерживать большую часть C ++ 0x (хотя экспорт все еще не нравится, по крайней мере, я так понимаю).
Когда дело доходит до ISO C, люди, работающие над стандартом, не являются представителями рынка Microsoft. Клиенты Microsoft могут использовать C ++ 98, если они просто ищут лучший C. Так зачем Microsoft тратить деньги на C99? Конечно, детали, отобранные Microsoft, но это нормальный бизнес. Они все равно понадобятся для C ++ 0x, так зачем ждать?
источник
К сожалению, поддержки MSVC для C очень не хватает. Он поддерживает только ту часть C99, которая является подмножеством C ++ ... что означает, например, что физически невозможно скомпилировать ffmpeg или его библиотеки libav * в MSVC, поскольку они используют многие функции C99, такие как именованные элементы структуры. Это усугубляется тем фактом, что libavcodec также требует компилятора, который поддерживает выравнивание стека, чего нет в MSVC.
Я работаю над x264, который, в отличие от ffmpeg , прилагает усилия для поддержки MSVC, хотя это часто само по себе было кошмаром. Он не поддерживает выравнивание стека, даже если вы явно передаете вызов функции наивысшего уровня через явную функцию выравнивания стека на основе сборки, поэтому все функции, требующие выравнивания стека, должны быть отключены. Также очень раздражало то, что я тоже не могу использовать vararrays; возможно, это к лучшему, поскольку, очевидно, GCC сильно пессимизирует их с точки зрения производительности.
источник
Более свежая публикация о совместимости функций MSVC C ++ 11 для MSVC 2010 и 2011 теперь доступна в Интернете .
источник
Microsoft никогда не проявляла реального интереса к поддержанию скорости со стандартом c99 (который к настоящему времени устарел). Печально для C-программистов, но я подозреваю, что Microsoft больше заботится о C ++ - сообществе.
источник
Visual C ++ 2008 SP1 содержит, по крайней мере, части TR1, и время от времени команда Visual C ++ ведет блог или обсуждает C ++ 0x, поэтому я думаю, что они будут поддерживать его в какой-то момент в этой функции. Но ничего официального я не читал.
источник
Обновленная информация по этому поводу:
В настоящее время (10 ноября 2008 г.) существует "Community Tech Preview" (CTP) VS2010, который содержит предварительную версию VC10, в которой реализованы некоторые части C ++ 0x (обратите внимание, что VC10 не будет иметь полного набора C ++ 0x изменения реализованы даже после выпуска VC10):
http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en
Некоторые подробности о том, что нового в VC10 CTP:
Как отмечалось в статье выше, «Компилятор Visual C ++ в сентябрьской версии Microsoft Visual Studio 2010 Community Technology Preview (CTP) содержит поддержку четырех языковых функций C ++ 0x, а именно:»
источник
Херб Саттер является председателем комитета стандартов ISO C ++, а также работает в Microsoft. Я не знаю о стандарте Visual Studio C - в основном потому, что я никогда не использую простой C, - но Microsoft уверена, что пытается продвигать новый стандарт C ++ вперед. Свидетельством этого является - как упоминалось в OregonGhost - TR1, включенный в последний выпуск Visual Studio Service Release.
источник
Команда Visual C ++ опубликовала таблицу функций C ++ 0x, которые поддерживает выпуск 2010, по адресу http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language. -features-в-vc10-the-table.aspx . Поскольку между спецификацией и реализацией может быть запаздывание, это кажется вполне разумным. В Википедии есть хорошая статья о спецификации. На момент написания статьи это еще не закончено.
источник
Visual C ++ Bloq предоставляет много информации о нескольких интересных моментах, касающихся поддержки C ++ 11 в VC ++ 11, включая несколько таблиц.
Блог группы разработчиков Visual C ++, Возможности C ++ 11 в Visual C ++ 11
источник