Вы не можете объявить переменную в начале оператора case. Сделайте тестовый пример, который просто состоит из этого, и вы получите ту же ошибку.
Это не связано с объявлением переменных в середине блока - даже при принятии стандарта, который позволяет не заставит GCC принять декларацию в начале описания дела. Похоже, что GCC рассматривает метку case как часть строки и, таким образом, не позволяет там указывать.
Простым обходным решением является просто положить точку с запятой в начале дела, чтобы объявление не было в начале.