7

可能重复:
不使用 sizeof 的数据类型的大小

我的一位朋友最近出现在 NVIDIA 采访中,他被邀请参加implement his own sizeof in C。我尝试做同样的练习并成功编写了两个不同的定义,sizeof其中一个可以处理变量,另一个可以处理数据类型,但我无法合并两者。有什么办法吗?sizeof此外,是否有可能在 C中实现一个完整的。

处理 类型intchar

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

处理变量,如x

#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))
4

1 回答 1

1

好问题

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

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

如果用户这样做怎么办

sizeof (*ptr)

sizeof (func())
于 2012-06-02T14:21:10.487 回答