2012-06-02 23 views
7

Eventuali duplicati:
size of a datatype without using sizeofimplementare il proprio sizeof

Un mio amico ha recentemente apparso in un'intervista NVIDIA in cui è stato chiesto di implement his own sizeof in C. Ho provato a fare lo stesso per la pratica e scrivere correttamente due diverse definizioni di sizeof una delle quali può gestire variabili e altre possono gestire i tipi di dati, ma non riesco a unire le due. C'è un modo per farlo? Inoltre, è possibile implementare un completo sizeof in C.

tipi Maneggiare come int, char ecc

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

gestisce le variabili come x

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

Naturalmente, questi funzionano solo perché il compilatore è effettivamente chiamando sizeof() sotto il cofano. .. :) –

+0

Sarà una buona idea per uno studente come te implementare container_of e offset_of di macro. Buon apprendimento! – Saurabh

+0

Una ragione per cui è difficile/impossibile è ovviamente che 'sizeof' non è una funzione. Questa domanda è un po 'come "c'è un modo per implementare' = 'in C, senza usare' = '?". – unwind

risposta

1

Buona domanda

  1. I non vedo un modo per unire i due.

  2. L'attuazione di gestire il secondo è pericoloso

se l'utente fa

sizeof (*ptr) 

sizeof (func()) 
+0

ho pensato anche a quelli, ma ci possono essere molti altri modi per usare sizeof ... ho deciso di provare prima a implementare quelli più comuni e poi quello più complesso ... ma sono bloccato sulla fusione parte .... –