2014-07-15 5 views
4

error C2712: Cannot use __try in functions that require object unwinding으로 잠시 문제가 있습니다. 문제를 좁히고 나서 매우 간단한 코드가 남았고 그 원인을 이해할 수 없습니다. 이 오류. Windows에서 Visual Studio를 사용하고 있습니다. 나는 모든 오류를 잡으려면, 그리고 어느 하나에 충돌하는 프로그램을 원하지 않기 때문에 나는/EHA로 컴파일하고매우 간단한 코드이고 C2712 오류가 발생하는 이유를 이해할 수 없었습니다.

(I 사용하지 않는/EHsc)

내가 __try/__except하지 try/catch을 사용하는 이유는 예를 들어 0으로 나누기 등 try-catch가 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 
+0

** 모든 ** 예외를 잡으려는 욕망에 아마 잘못 생각한 것입니다. 어쨌든이 작업을하기 위해서'__try' /'__catch' 블록을 다른 기능으로 옮겨야한다고 생각합니다. – Praetorian

+0

@Praetorian 나는 그것을했고, 작동하지만, 모든 메인은 정적 함수로 가득 차있다. 그리고 나는 try-except를 모든 메인 위에두고 싶다. – user1438233

+0

'main()'내의 모든 것을 다른 함수 'do_main'), 그리고 나서'__try {do_main(); } ...'? – Praetorian

답변

5

솔루션이다. 자세한 내용은 Compiler Error 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)를 사용하여 어떤 선언.