Implementa tu propio tamaño de

Posible duplicado:
Tamaño de un tipo de datos sin usar sizeof

Uno de mis amigos apareció recientemente en la entrevista de NVIDIA, donde se le pidió que 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 combinar las dos. ¿Hay alguna manera de hacerlo? Además, ¿es posible implementar un sizeof completo en C.

Manejar tipos como int , char , etc

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

Maneja variables como x

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

Buena pregunta

  1. No veo una manera de fusionar los dos.

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

¿Qué pasa si el usuario lo hace?

 sizeof (*ptr) sizeof (func())