我有uint8_t orig[ETH_ALEN];
如何使用__printf(3, 4)
打印
定义为#define __printf(a, b) __attribute__((format(printf, a, b)))
Orig应该是以太网硬件地址。
最佳答案
您需要构造一个合适的格式字符串。 printf()
函数无法一次性打印数组,因此您需要将其拆分并打印每个uint8_t
:
__printf("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
orig[0] & 0xff, orig[1] & 0xff, orig[2] & 0xff,
orig[3] & 0xff, orig[4] & 0xff, orig[5] & 0xff);
& 0xff
是为了确保仅将8位发送到printf()
;但是,对于像uint8_t
这样的无符号类型,则不需要使用它们,因此您也可以尝试不使用它们。这假定使用常规的48位MAC,并使用conventional以冒号分隔的十六进制样式进行打印。
关于c - 打印uint8_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14358967/