Keresés

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

  • don_peter

    senior tag

    válasz buherton #4664 üzenetére

    Igazából, most megírtam pár részt, hogy miként működik és elég gyorsan és jól. (elsőre legalább is)
    Ha nem "goto" utasítással ugrok vissza egy-egy program részhez akkor egy "else if"-ágas feltétel rendszert kell alkotnom és egy előre deklarált navigációs változóban kell megadjam, hogy éppen melyik ág érvényesüljön.
    Így elsőre a "goto" elég átlátható struktúrát adott számomra, de persze nem rossz az "else" ág sem.
    Azt olvastam a könyvben, hogy nem jó túl sok feltételt használni a programozás során persze ellenállításként azt is megemlíti, hogy a túl kevés sem jó... :D
    Szóval azt tanácsoljátok, hogy hagyjam a "goto" utasítást?
    Nem biztonságos?
    Biztonságosabb az "else if" elágazás?

    A program egy forrasztó állomás vezérlését fogja kiszolgálni.
    Pár mondatban összefoglalom hogyan is állok most és mi lenne az elképzelés:

    Gép bekapcsolásnál ellenőrzés megy végbe mely megvizsgálja az utolsó használt hőprofilt és ha van ilyen akkor betölti és automatikusan felkínálja a program elindítását. (nem térek ki a program futására...)

    Ha nincs utoljára betöltött hőprofil vagy hibás akkor ezt a hibát közli és ugrania kell a menüre.

    A menüben több menüpontból lehet választani mint pl.: Új profil hozzáadása, Aktuális profil szerkesztése, Elmentett profilok kilistázása, és még pár.

    Ezek közt kell gyakorlatilag navigálnom...

  • Jester01

    veterán

    válasz buherton #4664 üzenetére

    Hogy nem általános és nem ajánlott az nézőpont kérdése. A linux kernel például tele van vele (konkrétan 112235 darabot számoltam össze), mert erőforrás felszabadításhoz hiba után hasznos. Például:

    gcm_zeroes = kzalloc(16, GFP_KERNEL);
    if (!gcm_zeroes) return -ENOMEM;

    err = crypto_register_template(&crypto_gcm_base_tmpl);
    if (err) goto out;

    err = crypto_register_template(&crypto_gcm_tmpl);
    if (err) goto out_undo_base;

    err = crypto_register_template(&crypto_rfc4106_tmpl);
    if (err) goto out_undo_gcm;

    err = crypto_register_template(&crypto_rfc4543_tmpl);
    if (err) goto out_undo_rfc4106;
    return 0;

    out_undo_rfc4106:
    crypto_unregister_template(&crypto_rfc4106_tmpl);
    out_undo_gcm:
    crypto_unregister_template(&crypto_gcm_tmpl);
    out_undo_base:
    crypto_unregister_template(&crypto_gcm_base_tmpl);
    out:
    kfree(gcm_zeroes);
    return err;

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