(übergebene) Variablen in der aufgerufenen Funktion ändern??

10/06/2008 - 13:20 von onlinefloh | Report spam
Tach zusammen,

Ich sitze gerade mal wieder vor einem klitzekleinen Problem, das sich
meinen Gedankengàngen widersetzt:

Ich habe eine Statusvariable definiert und will diese innerhalb einiger
Routinen àndern. Also, um es sauber zu machen, die Variable als Pointer
definiert und den Pointer übergeben, also ein klassisches
Call-by-reference, in etwa so:

in einem Modul:
uint8_t *status;

in der dazugehörigen Headerdatei auch als extern deklariert.

der Prototyp der àndernden Funktion:
void enter_State(uint8_t *status);

die Funktion selber (abgekürzt):
void enter_State(uint8_t *status) {
switch (*status) {
case 0x00:
do_something();
*status = 0x01;
break;
case 0x01:
do_some_else();
*status = 0x02;
break;
}
}

im main() dann der Aufruf
enter_State(status);

Das Problem dabei: Der Wert der Statusvariablen wird nicht geàndert.
Habe ich irgendetwas offensichtliches übersehen??

Gruß,
Florian
 

Lesen sie die antworten

#1 Rainer Weikusat
10/06/2008 - 13:36 | Warnen spam
(Florian E. Teply) writes:
in einem Modul:
uint8_t *status;

in der dazugehörigen Headerdatei auch als extern deklariert.

der Prototyp der àndernden Funktion:
void enter_State(uint8_t *status);

die Funktion selber (abgekürzt):
void enter_State(uint8_t *status) {
switch (*status) {
case 0x00:
do_something();
*status = 0x01;
break;
case 0x01:
do_some_else();
*status = 0x02;
break;
}
}

im main() dann der Aufruf
enter_State(status);

Das Problem dabei: Der Wert der Statusvariablen wird nicht geàndert.
Habe ich irgendetwas offensichtliches übersehen??



Das sollte

uint8_t status

und

enter_State(&status)

sein.

Ähnliche fragen