Rückgabe vom Typ uint32_t funktioniert nicht

Gast #2722451
Lesenswert?

Hallo,

ich rufe aus meiner main()-Funktion eine Funktion auf, deren 
Rückgabewert vom Typ uint32_t ist. Allerdings sind hier jeweils nur die 
unteren 22 Bit belegt.

Der Rückgabewert in der main() ist nur noch 16 Bit breit, obwohl die 
Variable in der main() als uint32_t deklariert ist.

Alternativ habe ich den Wert auch direkt an die Funktion ltoa() 
übergeben und ein String davon erzeugt. Er ist auch nur 16 Bit breit.

"stdint.h" ist sowohl im c-File der main() als auch im c-File der 
Funktion eingebunden.

Achso, es geht um einen Avr & gcc. Die Optimierung habe ich 
eingeschaltet (-0s)

Hat jemand eine Erklärung?
#2722463
Lesenswert?

Ralf schrieb:

> Hat jemand eine Erklärung?


Beschreib nicht deinen Code, sondern zeig ihn.

Das hat gleich mehrere Vorteile
* zum einen tippst du dir die Fingern nicht wund
* zum anderen muessen wir nicht 100-tausend Details nachfragen
* und zu guter letzt können wir auch Fehler sehen, an die du
  noch gar nicht gedacht hast und deren Umgebung du daher gar
  nicht beschrieben hast.
Gast #2722495
Lesenswert?

Man kann nur raten...stell den Optimierungslevel auf Q0 und schau es dir 
noch mal an...
und sieh dir mal "volatile" an..

Der Compiler arbeitet bei mit volatile deklarierten Variablen ohne jede 
Optimierung....

Variable in der Unterfunktion debuggen und anschauen ob hier noch alles 
stimmt.


Aber unbedingt wie schon erwähnt: Code posten!


Gruß Choose

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren