Funktionen mit dauerhaften Variablen, wie mache ich es richtig

Hallo zusammen,

ich habe im Moment ein Programm für eine Lampe mit WS2812 LEDs und der Adafruit Noepixel Library. Man kann an der Lampe versch. Programme auswählen, und dann laufen verschieden Farbwechsel durch. Diese Farbwechsel befinden sich in Unterfunktionen mit for Schleifen. Das Programm bleibt solange in der for Schleife, bis ein Farbwechselzyklus durch ist. Die Schalter um die verschiedenen Programme abzuwählen werden im loop abgefragt, und ein Programmwechsel findet immer erst statt, wenn ein Farbwechselzyklus vorbei ist. Das gefällt mir so nicht. Da verschiedene Farbwechsel auf dieselbe Funktion zugreifen möchte ich das weiterhin in Funktionen lassen, aber eben nicht mehr mit for sSchleife, sondern mit if then, damit immer wieder die Schalter auch abgefragt werden. Jetzt zu meiner Frage. Wie merke ich mir die Variablen der Funktion zwischen zwei Aufrufen? Soll ich globale Variablen nehmen, oder ist das unsauber? Wie mache ich das richtig? Ich kann ja mit return nur einen Wert zurück geben, müsste aber bis zu fünf Variabeln über den Zyklus retten. Mir würde es schon helfen, wenn ihr mich mit Hinweisen anstupst, nach welchen Begriffen ich da am ehesten die Suchmaschine füttere.

Grüße und frohe Weihnachten,

SVen

lokal und static:

http://openbook.galileo-press.de/c_von_a_bis_z/009_c_funktionen_008.htm#mjfaa118de66f0515eb22dd115f803c18a

Sonstige Optionen um mehr als eine Variable zurückzugeben: 1.) Referenz-Parameter oder Zeiger 2.) Die Variablen in ein struct verpacken (wobei man da mit den impliziten Kopien bei Zuweisungen aufpassen muss)

Ist aber hier beides nicht so schön, da man dann ständig nur Variablen hin-und-her reicht die man auch gleich in der Funktion lassen kann.

Ohne deinen Code zu sehen, nur nach deiner Beschreibung nach zu urteilen.

Definiere Variablen welche die Funktion nicht "vergessen" soll mit static z.b.

static int Zaehler;

PS: Serenifly war schneller, macht aber nix hat sowieso viel mehr Ahnung als ich.

Danke Euch beiden!