Saikilito no intentes entenderlo XD
no vale mentira... si estás empezando carecerá de pie y cabeza, avanza un poco y lo revisas...
el define una directiva de preprocesador para escribir menos
#define obj2bin(obj) execobj2bin(&#obj, sizeof(#obj))
lo que hace eso, es convertir todas las apariciones del codigo de
obj2bin(una_variable)
en
execobj2bin(*una_variable, sizeof(una_variable))
luego usa la función para recorrer el largo en bytes (que lo obtuvo de sizeof)
for(int i = size - 1; i >= 0; --i)
y luego recorrer los 8 bit de cada byte
for(int j = 7; j >= 0; --j)
mostrando si es 0 o 1
printf("%d", ((char*)obj
)[i
]>>j
& 1); //si, así se ve más complicado que explicado