相关疑难解决方法(0)

sizeof运算符的实现

我试过实现sizeof运算符..我已经这样做了..

#define my_sizeof(x) ((&x + 1) - &x)
Run Code Online (Sandbox Code Playgroud)

但它总是最终为任何一种数据类型提供结果为'1'.

然后我用谷歌搜索了它...我发现代码被类型化了

#define my_size(x) ((char *)(&x + 1) - (char *)&x)
Run Code Online (Sandbox Code Playgroud)

并且代码正在工作,如果它是typecasted ...我不明白为什么..这个代码也完美地填充结构..

它也在努力

#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下,如果进行类型转换,如果不进行类型转换,它是如何工作的?

提前致谢..

c linux gcc sizeof typecast-operator

23
推荐指数
5
解决办法
2万
查看次数

标签 统计

c ×1

gcc ×1

linux ×1

sizeof ×1

typecast-operator ×1