В приведенном ниже коде mac_str
— это указатель на символ, а mac
— это uint8_t
массив:
sscanf(mac_str,"%x:%x:%x:%x:%x:%x",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
Когда я пробую приведенный выше код, он выдает предупреждение:
warning: format ‘%x’ expects argument of type ‘unsigned int *’, but argument 8 has type ‘uint8_t *’ [-Wformat]
но я видел в каком-то коде, который они указали
sscanf(str,"%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
который не дает никаких предупреждений, но оба работают одинаково.
Зачем использовать hhx
вместо просто x
?
hh
означает, как историческое предположение, половина половины. То есть байт. - person Joseph Quinsey   schedule 14.02.2014sscanf("%" SCNx8 , &x);
‹inttypes.h› - person BLUEPIXY   schedule 14.02.2014