2012-06-02 12 views
7

Duplicar posible:
size of a datatype without using sizeofimplementar su propio sizeof

Uno de mi amigo recientemente apareció en la entrevista NVIDIA donde se le pidió a implement his own sizeof in C. Traté de hacer lo mismo para la práctica y escribí con éxito dos definiciones diferentes de sizeof, una de las cuales puede manejar variables y otra puede manejar tipos de datos, pero no puedo fusionar las dos. ¿Hay alguna manera de hacerlo? Además, es posible implementar un completo sizeof en C.

tipos Handle como int, etc char

#define my_sizeof(type) ((size_t)(((type *)0) + 1)) 

maneja las variables como x

#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var)) 
+0

Por supuesto, éstos sólo funcionan porque el compilador está llamando efectivamente sizeof() bajo el capó. .. :) –

+0

Será una buena idea para un alumno como usted implementar container_of y offset_of macros. ¡Buen aprendizaje! – Saurabh

+0

Una razón por la que es difícil/imposible es, por supuesto, que 'sizeof' no sea una función. Esta pregunta es un poco como "¿hay alguna manera de implementar' = 'en C, sin usar' = '?". – unwind

Respuesta

1

Buena pregunta

  1. I no veo una manera de unir los dos.

  2. La aplicación para manejar el segundo es insegura

lo que si el usuario hace

sizeof (*ptr) 

sizeof (func()) 
+0

pensé en ellos también, pero también puede haber muchas otras maneras de usar sizeof ... decidí primero intentar implementar las más comunes y luego la más compleja ... pero estoy atrapado en la fusión parte ... –

Cuestiones relacionadas