вот придумал, как сделать ф-цию, обрабатывающую параметры разных размеров, понимаю, что наверно не первый такой умный, но вот захотелось поделиться, показана простая функция, но можно использовать и в более сложных ситуациях
#define PR_HEX_WRAP(a, b) print_hex(a, sizeof(typeof(*a)), b)
void print_hex(void *a, size_t memb_s, size_t s) {
size_t i;
s = s * memb_s;
printf("0X");
for (i = 0; i < s; i++) {
if ((i % memb_s == 0) && (i > 0))
printf(" 0X");
printf("%X", *((uint8_t *)a + i));
}
printf("\n");
}
можно передавать любой массив в ф-цию PR_HEX_WRAP и макрос автоматически передает нужный размер