2010-04-16 4 views
1

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

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

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

ответ

2

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.

+0

Спасибо. Обычно я сохраняю свои файлы с расширением c вместо cpp, когда я работаю в C. Поддерживает ли расширение для компилятора? Как ни странно, не упоминается, что MSVC имеет компилятор C; Он просто упоминает компилятор C++. – yCalleecharan

+1

Расширение имеет значение по умолчанию - .c файлы скомпилированы в режиме C, файлы .cpp и .cxx скомпилированы в режиме C++. Вы можете переопределить это с помощью '/ TP' или'/Tp 'для принудительной компиляции как C++ и'/TC' или '/ Tc ' для принудительной компиляции как C: http://msdn.microsoft.com/en- us/library/032xwy55.aspx –

+0

Это интересно знать. Благодарю. – yCalleecharan

 Смежные вопросы

  • Нет связанных вопросов^_^