Вопрос

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

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

  2. Он в порядке в том же коде, чтобы смешать синтаксис 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top