mikrocontroller.net

Forum: Compiler & IDEs printf einer uint32-t ergibt Compiler-Warnung


Autor: Otto Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe in einer struct eine Variable definiert:

uint32_t vid_prgr_nr ;  /* VIDEO Program Number als unsigned long int
*/

Diese Variable will ich ausgeben:

/* VIDEO Program Number */
printf ("VIDEO Program Number:\t%u\n\r",  eeprom_data.vid_prgr_nr
) ;  /* das ist Zeile 260 */

Und der gcc (neuste Version) gibt folgende Fehlermeldung:

../usart.c: In function `print_eeprom_data':
../usart.c:260: Warnung: unsigned int Format, anderer Typ Argument
(Argument 2)

Also:

Ich habe die Variable als unsigned long int definiert und will in
printf die Zahl als %u ausgeben. Warum die Fehlermeldung, Was mache ich
falsch ?

Danke an Alle !

Otto

Autor: Edd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Otto,

versuch es mal mit %lu anstatt %u.
Das l steht für long. %u selbst ist wohl nur short (16 bit).

-Edd

Autor: Otto Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ed,

das war's ! Ich bin neu in C und wußte nicht, dass man Formatzeichen
so angeben kann.

Danke Dir für Deine Mühe !

..und noch ein schönes WE !

Otto

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Generisch (so dass es auf jedem System funktioniert):

#include <inttypes.h>

uint32_t x;

...
printf("%" PRIu32 "\n\r", x);

Autor: Otto Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

ich möchte Dir an dieser Stelle 'mal danken für Deine Beiträge, die ja
wirklich sehr häufig sind und die wirklich fundiert sind.

Ich habe mit meinen 57 Jahren vor einem halben Jahr angefangen C/C++ zu
programmieren und denke, dass ich schon etwa 20% des Sprachumfangs
verstehe und anwende.

Das Projekt, das ich mache, ist ein MPEG2-Hardware-Encoder, der
natürlich auch ein uC hat (ATMega128), aber das bedeutet in erster
Linie MPEG2 zu verstehen, Video-Technik und Kommunikationstechnik (E.1
Standard) und am Rande lerne ich C/C++, WINAVR, Studio etc.

Das Gerät hat div. Schnittstellen, Tasten und ein LCD zur Bedienung,
die Bedienerführung eines solchen Geräts will sehr wohl überlegt sein !
Da tritt die C-Programmierung in den Hintergrund, das hat man einfach zu
können.

Als ich anfing mit dem Projekt, war mir klar, dass das eigentlich
hirnrissig ist, denn wir wollen das Gerät auch wirklich verkaufen.

Aber es geht voran !!

...und das habe ich in starkem Maße diesem Forum zu verdanken und
besonders dem WINAVR-Tutorial !

Ich weiß es wohl zu schätzen.

Otto

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.