实现自己的sizeof

时间:2012-06-02 14:16:00

标签: c

  

可能重复:
  size of a datatype without using sizeof

我的一位朋友最近出现在NVIDIA的采访中,被要求implement his own sizeof in C。我尝试在练习中做同样的事情并成功写出两个不同的sizeof定义,其中一个可以处理变量而另一个可以处理数据类型,但我无法合并这两个。有没有办法这样做?此外,是否可以在C中实现完整的sizeof

处理类型intchar

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

处理x

等变量
#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))

1 个答案:

答案 0 :(得分:1)

好问题

  1. 我没有办法合并两者。

  2. 处理第二个的实现是不安全的

  3. 如果用户做了

    sizeof (*ptr)
    
    sizeof (func())