Ошибка компилятора C C2362

#c

#c

Вопрос:

Код выглядит следующим образом

 {
   int a;

     if( a == 0 )
     {
          std::string  str("some");
          goto CLEANUP;
     }


return;
CLEANUP: 
     printf("CLEANUP");


}
  

это выдает мне ошибку Ошибка компилятора C2362
инициализация ‘идентификатора’ пропускается ‘меткой перехода’

Я переместил std::string str(«some»); после int a; по-прежнему выдает ту же ошибку

Комментарии:

1. я знаю, что goto — это плохой стиль, но он уже написан предыдущими программистами.

2. Похоже, что часть кода в конце перепутана?

3. Опубликуйте актуальный код

Ответ №1:

Это из-за того, что ваш:

 goto CLEANUP:
  

Предполагается, что:

 goto CLEANUP;
  

(точка с запятой, а не двоеточие)

Ответ №2:

Ошибка компилятора C2362

http://msdn.microsoft.com/en-us/library/s6s80d9f(v=vs.80).aspx

  if( a == 0 )
     {
          std::string  str("some");
          goto CLEANUP:
     }
  

должно быть

 goto CLEANUP;
  

Комментарии:

1. пожалуйста, забудьте о синтаксических ошибках. я прошу вас рассказать об ошибке концепции.

Ответ №3:

 goto CLEANUP:
  

должно быть,

 goto CLEANUP;
  

[Также убедитесь, что ваш код компилируется как printf неправильно в конце]