Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: @synthesize en 20 Junio 2010, 06:52 am



Título: función de seguimiento de errores
Publicado por: @synthesize en 20 Junio 2010, 06:52 am
Buenas a todos, estoy haciendo un proyecto de fin de curso, y para el programa, he creado una función para el seguimiento de errores, dentro de la ejecución del programa.

Tengo 3 variables, estado (Que cambia al pasar por cada función) Estado de error (Que mostrará un mensaje de error en caso de ser llamada) y contador de errores, para llevar la cuenta de errores en ejecución.

Os presento el código, a ver qué opináis. Pd. Borland C++ 3.1

Código
  1. #include <stdio.h>
  2.  
  3. #define STATE_A 0
  4. #define STATE_B 1
  5.  
  6. typedef struct FGE
  7. {
  8. unsigned int fState;
  9. unsigned int fStateError;
  10. unsigned int fContError;
  11. };
  12.  
  13. unsigned int sasfid();
  14.  
  15. int main(void)
  16. {
  17. if (sasfid()!=0)
  18. {
  19. fprintf(stdout, "Error en sasfid\n");
  20. return -1;
  21. }
  22. else return 0;
  23. }
  24.  
  25. unsigned int sasfid()
  26. {
  27. FGE Actual;
  28. Actual.fState =STATE_A;
  29. Actual.fStateError =STATE_A;
  30. Actual.fContError =STATE_A;
  31.  
  32. if (Actual.fState!=0 && Actual.fStateError!=0 && Actual.fContError !=0) return STATE_B;
  33. else return STATE_A;
  34. }

Como digo, por ahora solo es parte del proyecto, esto va a sufrir muchas modificaciones de seguro xD


Título: Re: función de seguimiento de errores
Publicado por: M3LiNdR1 en 20 Junio 2010, 17:17 pm
Código
  1. unsigned int sasfid()
  2. {
  3. FGE Actual;
  4. Actual.fState =STATE_A;
  5. Actual.fStateError =STATE_A;
  6. Actual.fContError =STATE_A;
  7.  
  8. if (Actual.fState!=0 && Actual.fStateError!=0 && Actual.fContError !=0) return STATE_B;
  9. else return STATE_A;
  10. }


Pero por lo que veo, esta función siempre te va a devolver lo mismo, STATE_A. Supongo que le pasaras Actual como parametro de entrada, no?


Título: Re: función de seguimiento de errores
Publicado por: cbug en 20 Junio 2010, 17:42 pm
Es cierto, esa función siempre devolverá 0. ¿No sería conveniente que se pase la estructura a analizar a sasfid?


Título: Re: función de seguimiento de errores
Publicado por: nicolas_cof en 20 Junio 2010, 22:02 pm
Ademas de lo ya mencionado, tenes declarada mal la estructura...

Código:
typedef struct FGE
{
unsigned int fState;
unsigned int fStateError;
unsigned int fContError;
} FGE;

Salu10.


Título: Re: función de seguimiento de errores
Publicado por: @synthesize en 20 Junio 2010, 22:05 pm
La estructura funciona tal y como está, trabajo en Borland C++ 3.1  :P

Y siempre devuelve STATE A porque está bien, el objetivo es que me devuelva B si hay algún error inicializando variables (En el ejemplo no, pero en el proyecto tengo mas)

También decir que sustituí && por ||.


Título: Re: función de seguimiento de errores
Publicado por: nicolas_cof en 20 Junio 2010, 22:22 pm
Cita de: Daemon Freedom
La estructura funciona tal y como está, trabajo en Borland C++ 3.1  :P

Daemon Freedom, mandalo a la papelera ;D

Cita de: Daemon Freedom
Y siempre devuelve STATE A porque está bien, el objetivo es que me devuelva B si hay algún error inicializando variables

Mmmmm tendrias que explicarte un poco mejor, porque yo la verdad no entiendo cual seria la funcionalidad :P

Salu10.


Título: Re: función de seguimiento de errores
Publicado por: cbug en 20 Junio 2010, 22:30 pm
Citar
Y siempre devuelve STATE A porque está bien, el objetivo es que me devuelva B si hay algún error inicializando variables
Citar
Mmmmm tendrias que explicarte un poco mejor, porque yo la verdad no entiendo cual seria la funcionalidad

¿Que devuelva error al inicializar una variable? ¿Cómo sucederá esto si se supone que estás inicializando bien dicho campo de la estructura, en cualquier otro caso el compilador es el que informará el error cierto?

No entiendo la finalidad  :xD


Título: Re: función de seguimiento de errores
Publicado por: @synthesize en 20 Junio 2010, 22:53 pm
A ver, esto está destinado para programas grandes, donde es probable que haya errores y se quieres hacer un seguimiento de ellos (Independientemente del compilador) y me basé en algo del arduino, en la sentencia setup, la cual se usa par inicializar cosas.

Por lo cual, al inicializar todo, puede haber cualquier tipo de error (Todos somos humanos,  :P) así que en caso de haber algo mas iniciado, que no detecta el compilador, y que nos puede dar problemas, devolvemos B y fin.

De todas formas como dije, le quedan muuuchas modificaciones, y a todo el código, no solo a esa parte


Título: Re: función de seguimiento de errores
Publicado por: leogtz en 20 Junio 2010, 23:48 pm
Cita de: Daemon Freedom
La estructura funciona tal y como está, trabajo en Borland C++ 3.1  :P

Daemon Freedom, mandalo a la papelera ;D


+= 1


Título: Re: función de seguimiento de errores
Publicado por: @synthesize en 21 Junio 2010, 00:05 am
Cita de: Daemon Freedom
La estructura funciona tal y como está, trabajo en Borland C++ 3.1  :P

Daemon Freedom, mandalo a la papelera ;D


+= 1

Ojalá, pero es el que me hacen usar en clase. En casa programo bajo GCC no os preocupéis XD


Título: Re: función de seguimiento de errores
Publicado por: 16BITBoy en 21 Junio 2010, 02:05 am
Ojalá, pero es el que me hacen usar en clase. En casa programo bajo GCC no os preocupéis XD

Dios en que clase.. ¿que estas cursando? yo en la clase de programacion que tenia podia usar el compilador que me diese en gana mientras supiese lo que iba a hacer y que al profesor le compilase. Si programas en ANSI, y tienes cuidado con ciertas funciones "malevolentes" (como diria stallman hablando español) no hay ningun problema. Precisamente mi profesor queria usar el mismo, borland del año de la pera. Y yo ni tenia ganas de meter ese compilador, ni de poner windows. (Y solo puse windows en clase de sistemas sobrte maquina virtual xD)


Título: Re: función de seguimiento de errores
Publicado por: @synthesize en 21 Junio 2010, 03:51 am
Ojalá me pudiera librar del borland (Aunque tiene cosas buenas, para que negarlo) pero bueno, no me queda mucho de curso.