c中的sizeof运算符

时间:2010-11-30 05:54:39

标签: c

请有人帮我在c ..

中实施sizeof()运算符

我知道用法..但我无法实现它。

3 个答案:

答案 0 :(得分:10)

您不能将sizeof()实现为库函数,它是编译器内在函数。你在写编译器吗?

答案 1 :(得分:1)

您无法在C中实施sizeof;它是一个基本的运算符(你也不能实现+)。

您可以通过执行以下操作来编写一个具有sizeof行为的有限子集的宏:

#define thisIsAHorribleHackDontDoThis(a) \
    ((size_t)((intptr_t)(&a + 1) - (intptr_t)&a))

但只有当a是左值时才会起作用(看起来很可怕)。 sizeof并不是那么有限,这就是为什么你应该使用它而不是重新发明实际上不是圆形的轮子。

答案 2 :(得分:-2)

以下是 sizeof 运算符

的实现
#define SZOF(x) (size_t)(((x*)(0))+1)