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