gcc 4.4.3 c89gestión de sentencias if
Tengo algunas funciones que inicializan algunos hardware y devuelven verdadero o falso. Si es falso, entonces tengo que desinicializar en el orden inverso.
Sin embargo, mi código se ve muy desordenado con todas las declaraciones if.
Por ejemplo, cada función puede ser verdadera o falsa. Esta es una muestra Como puede ver, el código se ve muy desordenado. Solo estoy buscando algún consejo sobre cómo puedo limpiarlo para hacerlo más manejable y, si es posible, escabroso.
Muchas gracias por cualquier consejo,
if(init_A() == TRUE) {
if(init_B() == TRUE) {
if(init_C() == TRUE) {
if(init_D() == TRUE) {
if(init_E() == TRUE) {
/* ALL STARTED OK */
}
else {
uninit_A();
uninit_B();
uninit_C();
uninit_D();
}
}
else {
uninit_A();
uninit_B();
uninit_C();
}
}
else {
uninit_A();
uninit_B();
}
}
else {
/* Failed to initialize B */
uninit_B();
}
}
else {
/* Failed to start */
}
Entonces, si llega a 'TODO COMIENZO OK', ¿nunca va a desconectar las cosas? – GManNickG
Una vez que el programa está marcado para el apagado, se inicializará en el orden inverso. Sin embargo, no lo especifiqué en la muestra. Como quería que fuera simple. Gracias. – ant2009
Puedo estar equivocado, pero ¿no debería el segundo, el último, tener uninit_A(), no uninit_B()? –