2012-06-02 15 views
7

Mögliche Duplizieren:
size of a datatype without using sizeofImplementieren Sie Ihre eigene sizeof

Einer meiner Freundin in NVIDIA Interview vor kurzem erschienen, wo er zu implement his own sizeof in C gefragt wurde. Ich habe versucht, dasselbe für die Praxis zu tun und erfolgreich zwei verschiedene Definitionen von sizeof zu schreiben, von denen eine mit Variablen umgehen kann und andere mit Datentypen umgehen können, aber ich kann die beiden nicht zusammenführen. Gibt es einen Weg dazu? Auch ist es möglich, eine vollständige sizeof in C.

Grifftypen wie int zu implementieren, char etc

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

Griffe Variablen wie x

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

Natürlich tut, diese nur funktionieren, weil der Compiler effektiv sizeof Aufruf wird() unter der Haube. .. :) –

+0

Es ist eine gute Idee für einen Lernenden wie Sie, container_of und offset_of_makros zu implementieren. Gutes Lernen! – Saurabh

+0

Ein Grund, warum es schwer/unmöglich ist, ist natürlich, dass 'sizeof' keine Funktion ist. Diese Frage ist ein wenig wie "gibt es eine Möglichkeit,' = 'in C zu implementieren, ohne '='? "Zu verwenden. – unwind

Antwort

1

Gute Frage

  1. I sehe keinen Weg, die beiden zusammenzuführen.

  2. Die Umsetzung der zweiten zu handhaben ist unsicher

was passiert, wenn der Benutzer

sizeof (*ptr) 

sizeof (func()) 
+0

Ich dachte an diese auch, aber es kann eine große Anzahl von anderen Möglichkeiten geben, um sizeof zu verwenden ... Ich entschied mich, zuerst zu versuchen, die gängigsten und dann die komplexere zu implementieren ... aber ich bin auf der Verschmelzung fest Teil .... –

Verwandte Themen