Hola a todos.
Verán tengo un problemilla que todavía no he conseguido solucionar.
En C++ puedo usar try, catch y throw para gestionar las excepciones.
Pero resulta que tengo programar en ANSI C.
Investigué sobre el tema y vi que esto se hace con señales. Bien, pues resolví alguna duda pero cuando escribi este code para probar lo aprendido...
#include <stdio.h>
#include <signal.h>
void manejador(int sig) {
printf("\Excepción capturada\n");
getchar();
}
int main() {
signal(SIGUSR,manejador);
printf(" %d",4/0);
}
Me di cuenta de que la constante SIGUSR no estaba definida en signal.h
Abri el archivo y le di un valor arbitrario (en concreto 12) pensando que después de esto el problema estaría solucionado...
Pero no es asi, el programa genera el tipico error de W xp de que mandes el reporte de errores en vez de capturar el error.
Por qué usando SIGPFE si captura el error y una vez definida la constante SIGUSR ( en signal.h)no? Puedo arreglarlo ?
Qué es lo que he hecho mal ? Porque este error es una prueba y lo que busco es escribir capturadores de excepciones para que los programas que haga.
En VB, usaba la API SetUnhandledExceptionFilter pero creo que no es viable esta solución porque para programas de consola tengo que incluir windows.h y son 300 kb + (con gcc), además si las librerias de C me lo pueden solucionar paso de esto.
A ver si pueden ayudarme, y gracias