MS VS 2008 и C99 - PullRequest
       42

MS VS 2008 и C99

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

Я с интересом прочитал пост «Насколько универсально поддерживается C99?». В одном из комментариев говорится, что Microsoft не поддерживает C99. Но символ комментария // работает с VS 2008, и этот символ находится в C99. У меня два вопроса:

  1. В какой степени VS 2008 поддерживает C99?

  2. Можно ли смешивать синтаксис C89 и C99 в одном и том же коде? Поэтому, если я напишу свой код на C89, а затем оставлю комментарий //. Это значит, что у меня смешанное кодирование. Так что же делает компилятор в таком случае? Проверьте мой код сначала с c89, а затем с C99, чтобы принять, что я использую // для комментирования?

1 Ответ

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

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.

...