实现自己的sizeof

Rav*_*pta 7 c

可能重复:
不使用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)

Sau*_*abh 1

好问题

  1. 我看不到将两者合并的方法。

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

如果用户这样做怎么办

sizeof (*ptr)

sizeof (func())
Run Code Online (Sandbox Code Playgroud)