我试过实现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)
任何人都可以解释一下,如果进行类型转换,如果不进行类型转换,它是如何工作的?
提前致谢..
虽然在这个论坛上已经提出了几个问题以及其他与sizeof运算符相关的问题,但我无法得到关于编译器如何评估sizeof运算符以查找任何数据类型,变量,指针,数组等的大小的任何答案.如果可能的话也指向我一些链接可以帮助我详细了解这一点.任何帮助将不胜感激.谢谢.