Buenas:
Me he creado una macro, que dependiendo de si se define un define mio, cambia la forma en la que se reciben las excepciones:
#ifdef DEBUG_APP_ERROR
#define _APP_TRY __try
#define _APP_CATCH(m) __except (ExpFilter(m,GetExceptionInformation(), GetExceptionCode(),__LINE__,__FUNCTION__)){}
#else
#define _APP_TRY try
#define _APP_CATCH(m) catch(...) {}
#endif
despues lo uso en un cacho de codigo:
#define DEBUG_APP_ERROR
while (!app->IsFinished())
{
_APP_TRY
{
app->Init ();
app->Main ();
app->End ();
}
_APP_CATCH("Bucle Principal");
}
Bueno, el caso es que cuando lo compilo, me dice :
Cannot use __try in functions that require object unwinding Cannot use __try in functions that require object unwinding
He buscado en Google y la causa es que no compilaba con /GX- para deshabilitar las SEH y usar try/catch de c (corregidme si me equivoco).
La cosa ahora es que con esa opcion, cuando compilo, el compilador me saca otro warning si uso el "using namespace STD".
warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
Bueno, pues son Incompatibles uno con el otro /Gx- override /EHsc , si quito /Gx- me dice que no puede hacerlo y si lo pongo me dice que no tiene el unwind...
¿Que estoy haciendo mal?
¿Puedo ignorar el warning?
¿Me estoy liando y realmente no entendi bien?
Gracias por adelantado y disculpad el tamaño del post.