Zaimplementuj swój własny rozmiar [duplikat]
Możliwy duplikat:
rozmiar typu danych bez użycia sizeof
Jeden z moich przyjaciół niedawno pojawił się w wywiadzie dla NVIDII, gdzie został poproszonyimplement his own sizeof in C
. Próbowałem zrobić to samo dla praktyki i z powodzeniem napisać dwie różne definicjesizeof
jeden z nich może obsługiwać zmienne, a inny może obsługiwać typy danych, ale nie jestem w stanie scalić tych dwóch. Czy jest jakiś sposób, aby to zrobić? Czy możliwe jest wdrożenie kompletnegosizeof
w C.
Rodzaje uchwytów jakint
, char
itp
#define my_sizeof(type) ((size_t)(((type *)0) + 1))
Obsługuje zmienne takie jakx
#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))