rückgabe von variablen aus funktionen
Hi, leider bin ich kein c-profi, demenstsprechend habe ich folgendes problem:
ich möchte einige funktionen für asuro in asuro.c implementieren, in denen bestimmte variablen benutzt werden, auf die jedoch auch das hauptprogramm sowie weitere funktionen in asuro.c zugreifen müssen. wie geht das?
ich weiss dass es den return befehl gibt, aber ich bin mir nicht sicher ob ich das richtig verstanden habe...
Bsp:
folgende funktion wird in asuro.c gespeichert
Code:
float linie(void){ //deklaration von funktion linie
float filter[2];
int aR=1, aL=2;
//hier kommt die funktion hin...
return filter[1], aR, aL;
das hauptprogramm ruft nun die funktion linie auf, und soll nach aufrufen der funktion die werte filter[1], aR, aL überliefert bekommen da diese auch im hauptprogramm, sowie in weiteren funktionen in asuro.c benötigt werden...kann mir jemand ein paar tipps geben??
vielen dank im vorraus
Re: rückgabe von variablen aus funktionen
Am besten geht das, indem du deine Daten in einer Struktur zusammenfasst. Falls sich die Daten konzeptionell nicht in einer einzigen Struktur wohlfohlen, kannst du auch mit Pointern arbeiten.
Code:
typedef struct
{
float filter;
int aR;
int aL;
} linedata_t;
linedata_t data;
#define FILTER1 12.0
void setLineData (linetata_t * d)
{
d->filter = FILTER1;
d->aR = 1;
d->aR = 2;
}
// aufruf
void foo (void)
{
setLineData (& data);
if (data.aR == data.aL)
...
}
data sollte hier eine globale oder statische (evtl.) lokale Variable sein. data als lokale auto-Variable anzulegen ist nicht so toll auf AVR.