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


von Otto Richter (Gast)


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

von Edd (Gast)


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

von Otto Richter (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Generisch (so dass es auf jedem System funktioniert):

#include <inttypes.h>

uint32_t x;

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

von Otto Richter (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.