Rückgabe vom Typ uint32_t funktioniert nicht

Gast #2722451
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?
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.