очень простой код и получая ошибку 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

6

Решение

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

7

Другие решения


По вопросам рекламы [email protected]