У меня некоторое время проблемы с 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
Вот решение. Для более подробной информации читайте Ошибка компилятора 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).