очень простой код и получение ошибки C2712, не могли понять, почему
у меня проблемы на некоторое время с error C2712: Cannot use __try in functions that require object unwinding
, после сужения проблемы, у меня остался очень простой код, и я не могу понять, почему он вызывает эту ошибку. Я использую Visual Studio под windows.
я компилирую с /EHa (я не использую /EHsc)
причина я использую __try/__except
, а не try/catch
это потому, что я хочу поймать все ошибки и не хочу, чтобы программа сбой при любых обстоятельствах, в том числе, например, деление на 0, что try-catch не уловить.
#include <string>
static struct myStruct
{
static std::string foo() {return "abc";}
};
int main ()
{
myStruct::foo();
__try
{ }
__except (true)
{ }
return 0;
}
выход:
error C2712: Cannot use __try in functions that require object unwinding
1 ответов
вот решение. Подробнее читайте Ошибка Компилятора C2712
#include <string>
struct myStruct
{
static std::string foo() {return "abc";}
};
void koo()
{
__try
{ }
__except (true)
{ }
}
int main ()
{
myStruct::foo();
koo();
return 0;
}
Дополнительное Примечание: не требуется static
если нет объявления с использованием вашей структуры (myStruct).