VC++ 2010 не даёт описать переменную в середине блока — ограничение Express-версии?
Возможность определять переменные в середине блока появилась в С стандарта 99.
Visual Studio 2010 поддерживает только С 98. Независимо от редакции.
Посмотрите в настройках проекта какая версия языка используется.
Не скажу на вскидку какие версии поддерживает cl от VS2010, в VS2017 за это отвечает опция /std. В VC2017 эта опция находится в Configuration Properties -> C/C++ -> Language -> C++ Language Standard
Поведение, которое вы описываете, характерно для лохматых версий Си.
Микрософт официально не поддерживает стандарты языка Си в своем компиляторе (хотя стандарты частично реализуются), поэтому в опциях компилятора нельзя это задать.
Если задать опцию /TP, то все файлы исходного кода будут компилироваться как С++ код, не зависимо от расширения файла. По умолчанию, если расширение .c - компилируется как Си код. Возможно эта опция поможет избавиться от ошибки, но есть шанс появления других ошибок. В VC2017 эта опция находится в Configuration Properties -> C/C++ -> Advanced -> Compile As
PS: номер и текст ошибки то же было бы не плохо сюда запостить.