implementacja operatora sizeof

Próbowałem wdrożyć operator sizeof. Zrobiłem w ten sposób ..

#define my_sizeof(x) ((&x + 1) - &x)

Ale zawsze kończyło się na podaniu wyniku jako „1” dla jednego z typów danych.

Po to googlałem to i znalazłem kodtypowany

#define my_size(x) ((char *)(&x + 1) - (char *)&x)

A kod działa, jeśli jest typowany. Nie rozumiem, dlaczego ... Ten kod doskonale uzupełnia STRUKTURĘ.

Pracuje także dla

#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)

Czy ktoś może wyjaśnić, jak to działa, jeśli zostanie wpisane na maszynie, a jeśli nie zostanie wpisane na maszynie?

Z góry dziękuję..

questionAnswers(8)

yourAnswerToTheQuestion