Zakończyć funkcje przed czasem

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
nasiono
-
Posty: 46
Rejestracja: 29 lip 2005, 0:01

Zakończyć funkcje przed czasem

Post autor: nasiono » 11 sie 2006, 20:13

Witam stanołem własnie przed takim problemem jak zrobić żeby w po spełnieniu warunku
if(...) można by było błyskawicznie zakończyć funkcje bez wykonywania reszty programu?
Próbowałem tak :

funkcja(...){
...
...
if(...<...){break;}
...
...
...}

i nic z tego.
Próbowałem też

funkcja(...){
...
...
if(...<...){goto przeskok;}
...
...
przeskok;
}

ale niestety z jakiś nie znanych mi przyczyn wywala że przeskok nie może byc ostatnią instrukcją w funkcji, a ja potrzebuje żeby właśnie tak było żeby ominąć wszystko nawet "return".
Dziękuje za wszelkie sugestje?

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 11 sie 2006, 20:23

dla funkcji nie zwracającej wartości:

Kod: Zaznacz cały

void foo () {
   // ....
   if ( warunek ) {
       return;
    }
   // ....
}
dla funkci zwracającej wartość, niech będzie że unsigned char

Kod: Zaznacz cały

unsigned char foo2 () {
    //.........
    if ( warunek ) {
        return ( 0xAA );
    }
    //.........
    return ( 0xBB );
}
nasiono pisze:tak było żeby ominąć wszystko nawet "return".
to "return" to jest właśnie takie błyskawiczne zakończenie funkcji,
a ponieważ to funkcja, następuje wtedy zwolnienie stosu,
ewentualnie przekazanie wartości wyjściowych do kodu nadrzędnego...etc

reasumując - return - tego się nie da ominąć...

pa,
tasza

nasiono
-
Posty: 46
Rejestracja: 29 lip 2005, 0:01

Post autor: nasiono » 12 sie 2006, 10:32

Dzięki serdeczne o to chodziło. Pozdrawiam!

ODPOWIEDZ