Я компилирую некоторые файлы C, используя Microsoft C / C ++, и жалуюсь на объявление локальных переменных внутри блока. Объявление их в начале блока, конечно, хорошо. Какой переключатель компилятора я могу использовать для подавления ошибок, которые я получаю?
Очень ценится,
крис
В C89 и более ранних версиях все объявления переменных в области блока должны предшествовать любым операторам.C99 изменил это правило, так что объявления и операторы могут быть смешаны, как в C ++.
К сожалению, Microsoft решила не поддерживать C99 в Visual Studio и не планирует AFAIK.
В стандартном C вы не можете объявлять переменные нигде, кроме как в начале. Это отличается от C ++, где переменные могут быть объявлены где угодно.
Таким образом, вы должны скомпилировать файлы, как если бы они были C ++ через /TP.
/TP
Подробнее см. в этой статье .
Вы можете использовать / TP, чтобы заставить компилятор компилировать их как файлы C ++.Однако я не уверен, что вы этого хотите.
CL.exe /Tpfilename
Это означает «компилировать как C ++ независимо от расширения».
Или, другими словами, то, что вы делаете, является недопустимым в C, поэтому, конечно, он жалуется.Либо измените его на C ++, либо заставьте читать его как C ++.