首页 > 解决方案 > 如何在 c 中编写自定义 sizeof() 函数?

问题描述

我想为 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));
}

标签: csizeof

解决方案


sizeof使用其他语言特性来实现运算符是不可能的。它是语言的一部分,必须由编译器实现。最重要的是因为:

  • 数组类型不会衰减为指针
  • sizeof不计算表达式 in
  • 变长数组经过特殊处理

推荐阅读