我试过实现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)
任何人都可以解释一下,如果进行类型转换,如果不进行类型转换,它是如何工作的?
提前致谢..