druckt den uint8_t

7

Ich habe uint8_t orig[ETH_ALEN];

Wie kann ich es mit __printf(3, 4)

drucken?

welches als #define __printf(a, b) __attribute__((format(printf, a, b)))

definiert ist

Die Orig sollte Ethernet-Hardware-Adresse sein.

    
Saeed 16.01.2013, 12:53
quelle

2 Antworten

9

Sie müssen eine passende Format-Zeichenfolge erstellen. Die Funktion printf() hat keine Möglichkeit, ein Array auf einmal zu drucken. Daher müssen Sie es teilen und jedes uint8_t :

drucken %Vor%

Das & 0xff soll sicherstellen, dass 8 Bits an printf() gesendet werden; Sie sollten nicht für einen unsignierten Typ wie uint8_t benötigt werden, also können Sie auch ohne es versuchen.

Dies setzt einen normalen 48-Bit-MAC voraus und druckt mit dem konventionellen Doppelpunkt-getrennten Hex-Stil

    
unwind 16.01.2013, 12:56
quelle
12

Verwenden Sie C99-Formatspezifizierer:

%Vor%     
user529758 16.01.2013 12:56
quelle

Tags und Links