función de seguimiento de errores

Iniciado por @synthesize, 20 Junio 2010, 06:52 AM

0 Miembros y 1 Visitante están viendo este tema.

@synthesize

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

#include <stdio.h>

#define STATE_A 0
#define STATE_B 1

typedef struct FGE
{
unsigned int fState;
unsigned int fStateError;
unsigned int fContError;
};

unsigned int sasfid();

int main(void)
{
if (sasfid()!=0)
{
fprintf(stdout, "Error en sasfid\n");
return -1;
}
else return 0;
}

unsigned int sasfid()
{
FGE Actual;
Actual.fState =STATE_A;
Actual.fStateError =STATE_A;
Actual.fContError =STATE_A;

if (Actual.fState!=0 && Actual.fStateError!=0 && Actual.fContError !=0) return STATE_B;
else return STATE_A;
}


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

M3LiNdR1

unsigned int sasfid()
{
FGE Actual;
Actual.fState =STATE_A;
Actual.fStateError =STATE_A;
Actual.fContError =STATE_A;

if (Actual.fState!=0 && Actual.fStateError!=0 && Actual.fContError !=0) return STATE_B;
else return STATE_A;
}



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?
Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res...


C/C++ - Prolog - Java - PHP - Python - SQL - ASP.NET - C# - javascript

cbug

Es cierto, esa función siempre devolverá 0. ¿No sería conveniente que se pase la estructura a analizar a sasfid?

nicolas_cof

Ademas de lo ya mencionado, tenes declarada mal la estructura...

typedef struct FGE
{
unsigned int fState;
unsigned int fStateError;
unsigned int fContError;
} FGE;


Salu10.

@synthesize

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 ||.

nicolas_cof

Cita de: Daemon FreedomLa estructura funciona tal y como está, trabajo en Borland C++ 3.1  :P

Daemon Freedom, mandalo a la papelera ;D

Cita de: Daemon FreedomY 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.

cbug

CitarY siempre devuelve STATE A porque está bien, el objetivo es que me devuelva B si hay algún error inicializando variables
CitarMmmmm 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

@synthesize

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

leogtz

Cita de: nicolas_cof en 20 Junio 2010, 22:22 PM
Cita de: Daemon FreedomLa estructura funciona tal y como está, trabajo en Borland C++ 3.1  :P

Daemon Freedom, mandalo a la papelera ;D


+= 1
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

@synthesize

Cita de: Leo Gutiérrez. en 20 Junio 2010, 23:48 PM
Cita de: nicolas_cof en 20 Junio 2010, 22:22 PM
Cita de: Daemon FreedomLa 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