Этот вопрос был вызван ответами на сообщение Herb Sutter, где он объяснил, что решение MS не поддерживает/не делает компилятор C99, а просто идет с C (99), которые в любом случае соответствуют стандарту С++ (11).
Комментарий :
(...) C важно и заслуживает хотя бы немного внимания.
Существует много существующего кода, который действителен C, но не является действительный С++. Этот код вряд ли будет переписан (...)
Так как я только программирую в MS С++, я действительно не знаю, что такое "чистый" C, т.е. у меня нет готовой картины того, какие детали языка С++ я использую, не в C (99) и У меня мало подсказок, где какой-то код C99 не работает, как есть в компиляторе С++.
Обратите внимание, что я знаю только о ключе C99 restrict
, которое для меня кажется очень узким приложением и массивами переменной длины (я не уверен, насколько они распространены или важны).
Кроме того, мне очень интересно, существуют ли какие-либо важные семантические различия или gotchas, то есть код C (99), который будет компилироваться под С++ (11), но делать что-то по-другому с компилятором С++, чем с компилятором C.
Быстрые ссылки: внешние ресурсы из ответов:
- Страница Википедии
- Сравнение Дэвида Р. Триббла (с 2001 года)
- Стандарт С++ 11: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf (раздел C.1)