【发布时间】:2021-08-01 17:02:53
【问题描述】:
我想为 c sizeof() 运算符实现一个替代的自定义函数。我从互联网上得到了以下定义,它的工作非常好。
#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)
但不是预处理器(#define 宏)函数,我想将其实现为一个单独的函数,如下所示。 谁能帮我完成 sizeof_custom() 的定义?
注意:为什么我想以这种方式实现是为了了解我在尝试使用 void 指针实现它并找到差异时遇到的困难的原因(我理解 void 指针不允许算术运算,但是我如何构建这个函数?)。请帮忙。
#include <stdio.h>
return_type sizeof_custom ( arg )
{
....
....
// return the size of the variable
}
void main()
{
int a; // It can be int, float, char,....
printf("size = %d", sizeof_custom(a));
}
【问题讨论】:
-
sizeof不是一个函数,它是一个表达式,它是语言的一部分(因此被编译器特殊对待) -
@UnholySheep 它是一个运算符。
-
为什么,为什么,为什么,......?您可以这样做,但这只是因为编译器中隐藏了所有准备好的
sizeof -
Why is sizeof considered an operator?。许多事情不能通过代码完成,必须依赖编译器功能或内置