可能重复:
不使用sizeof的数据类型的大小
我的一位朋友最近出现在NVIDIA的采访中,他被要求参加implement his own sizeof in C.我试图在练习中做同样的事情,并成功写出两个不同的定义,sizeof其中一个可以处理变量,其他可以处理数据类型,但我无法合并这两个.有没有办法这样做?此外,是否可以sizeof在C中实现完整.
处理类型,如int,char等
#define my_sizeof(type) ((size_t)(((type *)0) + 1))
Run Code Online (Sandbox Code Playgroud)
处理变量之类的 x
#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))
Run Code Online (Sandbox Code Playgroud)
好问题
我看不到将两者合并的方法。
处理第二个的实现是不安全的
如果用户这样做怎么办
sizeof (*ptr)
sizeof (func())
Run Code Online (Sandbox Code Playgroud)