Переключатель компилятора Microsoft C / C ++, необходимый для размещения объявления локальной переменной - PullRequest
4 голосов
/ 07 января 2011

Я компилирую некоторые файлы C, используя Microsoft C / C ++, и жалуюсь на объявление локальных переменных внутри блока. Объявление их в начале блока, конечно, хорошо. Какой переключатель компилятора я могу использовать для подавления ошибок, которые я получаю?

Очень ценится,

крис

Ответы [ 4 ]

5 голосов
/ 08 января 2011

В C89 и более ранних версиях все объявления переменных в области блока должны предшествовать любым операторам.C99 изменил это правило, так что объявления и операторы могут быть смешаны, как в C ++.

К сожалению, Microsoft решила не поддерживать C99 в Visual Studio и не планирует AFAIK.

2 голосов
/ 07 января 2011

В стандартном C вы не можете объявлять переменные нигде, кроме как в начале. Это отличается от C ++, где переменные могут быть объявлены где угодно.

Таким образом, вы должны скомпилировать файлы, как если бы они были C ++ через /TP.

Подробнее см. в этой статье .

0 голосов
/ 07 января 2011

Вы можете использовать / TP, чтобы заставить компилятор компилировать их как файлы C ++.Однако я не уверен, что вы этого хотите.

0 голосов
/ 07 января 2011
CL.exe /Tpfilename

Это означает «компилировать как C ++ независимо от расширения».

Или, другими словами, то, что вы делаете, является недопустимым в C, поэтому, конечно, он жалуется.Либо измените его на C ++, либо заставьте читать его как C ++.

...