请有人帮我在c ..
中实施sizeof()
运算符
我知道用法..但我无法实现它。
答案 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)