Можно создать дубликат:
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))
Конечно, эти работы только потому, что компилятор эффективно вызывая SizeOf() под капотом. .. :) –
Будет хорошей идеей для ученика, как вы, реализовать макросы container_of и offset_of. Хорошее обучение! – Saurabh
Одна из причин, по которой трудно/невозможно, конечно, что 'sizeof' не является функцией. Этот вопрос немного напоминает «есть ли способ реализовать' = 'в C, не используя' = '?". – unwind