Hirdetés

Új hozzászólás Aktív témák

  • buherton
    őstag

    Összedobtam egy kis részletet miről is van szó és ami jóbban szemlélteti a dilemmámat.
    goto vagy else if megoldással:

    main(){
    menu:
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    //goto Meghívhatja saját magán kívül mindegyiket
    pofil_betoltve:
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    //goto Meghívhatja a menu-t és a start-ot
    uj_profil:
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    //goto Meghívhatja a menu-t és a pofil_betoltve-t
    prifil_szerkesztes:
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    //goto Csak a menu-t hívhatja meg
    profil_lista:
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    //goto Meghívhatja a pofil_betoltve-t és a menu-t
    start:
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    //goto Egyéb más funkciót fog tudni meghívni és visszatérésként a pofil_betoltve-t
    }

    main(){
    unsigned char navigacio; //Függően attól hogy a felette lévő feltételek miként értékelődnek ki a szerint töltődik fel értékkel
    while(1){ //végtelen ciklusban pörög és folyamatosan vizsgálnia a kell a feltételeket
    if(navigacio==0){
    //hasonlóan mint feljebb
    //szükséges változók nullázása
    //Sok sor program kód
    //navigacio-s változót írjuk felül attól függően melyik feltételbe akarunk navigálni
    }else if(navigacio==1){
    //-- " --
    }else if(navigacio==2){
    //-- " --
    }else if(navigacio==3){
    //-- " --
    }else if(navigacio==4){
    //-- " --
    }else if(navigacio==5){
    //-- " --
    } //-- " --
    }
    }

    Így talán átláthatóbb és érthetőbb a kérdésem.
    Ki melyiket használná?
    GOTO vagy ELSE IF?

    typedef enum
    {
    STATE_MENU = 0u,
    ...
    } STATE_E;

    static STATE_E menu_func(void)
    {
    //szükséges változók nullázása
    //Sok sor program kód egy while() ciklusban pereg
    // returnbe azt adsz vissza, amit akarsz
    ....
    return STATE_PROFIL_LOAD;
    }

    main() {

    STATE_E state = STATE_MENU;

    while(1)
    {

    switch(state)
    {
    case STATE_MENU:
    state = menu_func();
    break;
    case STATE_PROFIL_LOAD:
    state = profil_load();
    break;
    }
    }
    }

    Ha nem akarod keverni a szezont a fazonnal, akkor az állapot gép függvényeit külön modulba is rakhatod, ahol modulra lokális változókat használsz, ha a függvények között szükséges az adatáramlás. Nem tudom, hogy mit akarsz csinálni, de a 2 kB borítékolhatóan kevés lesz, de szerintem még a 4 kB is. Gondolom valamilyen LCD-t is használsz. Egy frankón megírt LCD kijelző vezérlő is ~800 B, ami semmi extrát nem tud csak szöveget ír ki, de azt kényelmesen.

    Nem vagy egy könnyű eset :P ;] .

Új hozzászólás Aktív témák