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.