MS VS 2008 и C99
Я с интересом прочитал пост "Насколько универсально поддерживается C99?". В одном из комментариев говорится, что Microsoft не поддерживает C99. Но символ комментария // работает с VS 2008, и этот символ находится в C99. У меня есть два вопроса:
Насколько VS 2008 поддерживает C99?
Можно ли смешивать синтаксис C89 и C99 в одном и том же коде? Поэтому, если я напишу свой код на C89, а затем оставлю комментарий //. Это значит, что у меня смешанное кодирование. Так что же делает компилятор в таком случае? Проверьте мой код сначала с c89, а затем с C99, чтобы принять, что я использую // для комментариев?
1 ответ
MSVC очень мало поддерживает C99 в режиме C. Несколько вещей, которые он делает (например, комментарии "//"), на самом деле являются расширениями, которые они добавили в режим C90, которые исходят из C++, который может случиться и в C99. При компиляции кода C MSVC обрабатывает комментарии "//" как расширение C90, а не то, что вы смешиваете код C90 с кодом C99.
Вы получите "лучшую" поддержку C99, скомпилировав свои файлы C как C++ - таким образом, вы получите объявления, которые могут быть перемежены с операторами и объявлениями переменных в for
заявления, которые относятся к for
цикл, например.
Похоже, что Microsoft не заинтересована в добавлении поддержки C99 в MSVC - даже если они добавляют вещи из C99 в режим компилятора C++ (например, stdint.h
добавляется в VS2010), поскольку некоторые дополнительные компоненты C99 добавляются в C++ в C++0x.