c - 如何在 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));
}
解决方案
sizeof
使用其他语言特性来实现运算符是不可能的。它是语言的一部分,必须由编译器实现。最重要的是因为:
- 数组类型不会衰减为指针
sizeof
不计算表达式 in- 变长数组经过特殊处理
推荐阅读
- string - gdb调试器中字符串的条件断点
- sql - 如何隐藏postgres中的重复记录
- c# - 在 Asp.net Core Angular Webapi 发布 IIS 上无法建立连接
- javascript - CropperJs 图像在 Vue 中很小,但在编辑后恢复正常大小
- c++ - 我想在 C++ 中创建一个指向 char 值的指针并获取它的大小,但它不显示任何内容
- angular - Angular Form : 这个数组还没有注册表单控件
- ios - 为什么 .putData 不使用 Swift 在 Firebase 存储中上传图像?
- java - 改造后请求返回空值?
- reporting-services - SSRS 数据行 - 它们可以“压缩”吗?
- javascript - 使用“+”号快速解析 queryParams