Próbowałem wykonawczych operatora sizeof .. Zrobiłem w ten sposób ..implementacja operatora sizeof
#define my_sizeof(x) ((&x + 1) - &x)
Ale to zawsze kończyło się podając wynik jako „1” dla jednej z typem danych ..
mam wtedy google go za to .. i znalazłem kod typecasted
#define my_size(x) ((char *)(&x + 1) - (char *)&x)
i kod działa, jeśli jest typecasted .. i d ONT zrozumieć dlaczego .. Kod ten jest również wyściółka STRUKTURY doskonale ..
Jest również pracuje dla
#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
Może ktoś proszę wyjaśnić, jak to działa, jeśli typecasted a jeśli nie typecasted?
góry dzięki ..
Przesyłanie do 'unsigned int' jest złym pomysłem. "uintptr_t" jest lepsze, ale nadal wymaga denerwującej, ale nieuniknionej, niejawnej konwersji. –