2012-06-02 2 views
7

Можно создать дубликат:
size of a datatype without using sizeofРеализовать свой собственный SizeOf

Один мой друг недавно появился в NVIDIA интервью, где ему было предложено implement his own sizeof in C. Я пытался сделать то же самое для практики и успешно писать два разных определения sizeof, один из которых может обрабатывать переменные, а другие могут обрабатывать типы данных, но я не могу объединить эти два. Есть ли способ сделать это? Кроме того, можно реализовать в С. полную sizeof

типы ручки, как int, char и т.д.

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

Рукоятки переменные как x

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

Конечно, эти работы только потому, что компилятор эффективно вызывая SizeOf() под капотом. .. :) –

+0

Будет хорошей идеей для ученика, как вы, реализовать макросы container_of и offset_of. Хорошее обучение! – Saurabh

+0

Одна из причин, по которой трудно/невозможно, конечно, что 'sizeof' не является функцией. Этот вопрос немного напоминает «есть ли способ реализовать' = 'в C, не используя' = '?". – unwind

ответ

1

Хороший вопрос

  1. I не вижу способа объединить эти два.

  2. Реализация обрабатывать второй небезопасна

, что если пользователь делает

sizeof (*ptr) 

sizeof (func()) 
+0

Я думал об этом, но может быть и много других способов использовать sizeof ... Я решил сначала попытаться реализовать самые распространенные, а затем более сложные ... но я застрял на слиянии часть .... –

Смежные вопросы