Каков официальный статус поддержки C99 в VS2013?

Я вижу, что VS2013 добавил поддержку большого количества основных функций основного языка C99. Теперь он поддерживает сложные литералы, назначенные инициализаторы, переменные макросы, чередующиеся объявления и заявления, чтобы назвать несколько.

Это указывает на то, что разработчики VS сделали серьезные шаги для поддержки C99 в Visual Studio. Тем не менее, некоторые из этих функций не являются частью языка С++, что, как представляется, является заметным отклонением от ранее объявленной стратегии разработки (например, "VS C-компилятор будет поддерживать только те функции C99, которые также являются частью С++" ).

Итак, есть ли официальное или полуофициальное слово о том, что происходит? Кажется, я ничего не могу найти в Сети. Были ли официально объявлены эти функции C99? Есть ли приверженность продолжению поддержки C99 в VS? Или это просто какая-то "мошенническая" неофициальная разработка?

Ответ 1

Есть несколько публичных официальных обсуждений этого вопроса от разработчиков Microsoft, С++ Conformance Roadmap, в котором говорится:

Herb также объявила, что в ответ на запросы клиентов RTM версия также будет включать несколько тактических языков языка C99, когда компиляция кода C, так что некоторые популярные библиотеки сообщества (в том числе FFmpeg) теперь смогут компилироваться с Visual С++ 2013.

Таким образом, это имеет официальную поддержку, но является стратегическим, из того, что я могу сказать из следующих статей, больше поддержки придется конкурировать с другими приоритетами.

У нас есть С++ 11/14 STL-функции, исправления и ломающиеся изменения в записи в блоге VS 2013 в формате STL:

Кроме того, некоторые функции C99 Core Language будут реализованы в 2013 RTM:

  • C99 _Bool

  • Смешанные литералы C99

  • C99 назначенные инициализаторы

  • Объявления переменных C99

и Поддержка библиотеки C99 в записи блога Visual Studio 2013 Pat Brenner, которая открывается с помощью

В этом сообщении в блоге я хочу поделиться некоторой информацией о C99 поддержка добавлена ​​в библиотеку времени выполнения C в Visual Studio 2013.

и заканчивается:

Мы знаем, что это не полная поддержка библиотеки C99 функции. Насколько нам известно, недостающие части это:

  • Заголовка tgmath.h отсутствует. Для этого заголовка необходима поддержка компилятора C.     Обратите внимание, что заголовок ctgmath был добавлен - это возможно, потому что для этого заголовка не требуется заголовок tgmath.h. ccomplex и cmath.
  • Отсутствует заголовок uchar.h. Это от C Unicode TR. Несколько спецификаторов формата в семействе printf еще не поддерживаются.
  • Функции snprintf и snwprintf отсутствуют в файлах stdio.h и wchar.h.

что несколько более интересно, поскольку STL активно обращается к комментариям к блогу, и их трудно подвести, но мы можем видеть, что будущие дополнения будут зависеть от конкурирующих приоритетов.

Благодаря cremno для указания другого сообщения в блоге C Runtime (CRT) Особенности, исправления и ломающиеся изменения в Visual Studio 14 CTP1, в котором говорится:

В CTP Visual Studio "14" мы полностью внедрили C99 Стандартная библиотека, за исключением любых библиотечных функций, которые зависят от функций компилятора, еще не поддерживаемых Visual С++ компилятор (особенно, <tgmath.h> не реализован). Есть несомненно, некоторые оставшиеся вопросы соответствия - мы знаем несколько, в том числе, что _Exit отсутствует, а wcstok имеет неправильную подпись, и мы работаем над их устранением. Если вы обнаружили ошибку или отсутствующую, сообщите об этом в Microsoft Connect. Если вы сообщаете об ошибках теперь есть очень хороший шанс, что мы сможем их исправить раньше RTM.

и содержит множество подробностей, которые нелегко суммировать.