我的一位朋友最近出现在NVIDIA的采访中,被要求implement his own sizeof in C
。我尝试在练习中做同样的事情并成功写出两个不同的sizeof
定义,其中一个可以处理变量而另一个可以处理数据类型,但我无法合并这两个。有没有办法这样做?此外,是否可以在C中实现完整的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 :(得分:1)
好问题
我没有办法合并两者。
处理第二个的实现是不安全的
如果用户做了
sizeof (*ptr)
sizeof (func())