Hallo,
ich würde gerne diesen switch-Fall vorzeitig verlassen:
switch(MSR_st)
{
case 1: // Hauptprogramm
{
t_func_glob(); // 10 // Tastenkombination für "Aufruf Globale Scalerauswahl"
t_func_main(); // 10 // Tastenkombinationen Hauptprogramm (scalerspezifisch)
MSR_st_sw(); // 20 // Umschaltlogik für den Wechsel zwischen Haupt- und Testpattern-Programm
}
break;
}
Nach dem Durchlaufen von t_func_glob() und t_func_main() soll MSR_st_sw() manchmal nicht auch noch ausgeführt werden.
Ob MSR_st_sw() ausgeführt werden soll, oder nicht, entscheidet sich erst in t_func_main() und äußert sich dadurch, dass sich die Variable MSR_st ändert.
Wie bewerkstelle ich dies am elegantesten?
Gruß Chris
lass t_func_main() einen boolean zurückgeben und frage mit if auf diesen Wert ab
z.B.:
if(t_func_main() == true)
MSR_st_sw();
Danke.
"..Wald vor lauter Bäumen und so.." 
Gruß Chris
Nur der Vollständigkeit halber:
Natürlich geht auch
switch(MSR_st)
{
case 1:
t_func_glob();
if(t_func_main() != true) break; // evtl. vorzeitig beenden
MSR_st_sw();
break;
case 2:
//...
}
Auch ein
** **return;** **
ist jederzeit erlaubt und beendet die aktuelle Funktion...
Wie war das mit dem return gemeint?
Geht es nicht eleganter als oben bereits aufgeführt.
Hier noch ein Beispiel:
In jeder der drei Funktionen kann zelle_01 geändert werden. Wurde zelle_01 auf diese Weise geändert, soll dieser Fall unmittelbar verlassen werden, so dass sämtliche folgenden Funktionen innerhalb des Falles nicht mehr aufgerufen werden.
switch(zelle_01)
{
case 0:
funktion_01(); // <- Wird innerhalb dieser Funktion "zelle_01" geändert,
funktion_02(); // soll diese
funktion_03(); // und diese Funktion nicht mehr aufgerufen werden.
break;
case 1:
funktion_01();
funktion_02();
funktion_03();
break;
}
Gruß Chris
Das gleiche. Wenn eine der Funktionen den Wert ändert gib true zurück (dazu den Rückgabe-Wert als boolean definieren und entsprechend return true und return false machen) und mach nach dem Aufruf return.
if(funktion_01()) return;
Meinst Du so?
switch(zelle_01)
{
case 0:
funktion_01();
if(funktion_01()) return;
funktion_02();
if(funktion_02()) return;
funktion_03();
break;
}
Gruß Chris
Nein. Mit if(func()) wird die Funktion doch schon aufgerufen. Du machst das da zweimal.
Verstehe ich nicht. Ich kann doch nicht einfach nur..
switch(zelle_01)
{
case 0:
if(funktion_01()) return;
if(funktion_02()) return;
funktion_03();
break;
}
..schreiben. 
Natürlich kannst du.
Das ist die Kurzform von dem hier:
if(func() == true)
return;
Das geht übrigens davon aus, dass das switch-statemement selbst in einer Funktion steht. Wenn du das in loop() machst, fängt loop() wieder von vorne an.
Und halt wie gesagt die Funktion korrekt schreiben. Sowas:
boolean func()
{
int alterWert = ...
int neuerWert = ...
return (alterWert != neuerWert);
}
Ok.. ich werde das testen.
Vielen Dank soweit.
Gruß Chris
Edit: Danke auch für Deine zusätzlichen Erklärungen! 8)