我已经尝试实现 sizeof 运算符。我是这样做的:
#define my_sizeof(x) ((&x + 1) - &x)
但它总是以任何一种数据类型的结果为“1”。
然后我用谷歌搜索了它,我发现了以下代码:
#define my_size(x) ((char *)(&x + 1) - (char *)&x)
如果是typecasted,代码就可以工作,我不明白为什么。这段代码也完美地填充了一个结构。
它也适用于:
#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
任何人都可以解释一下如果类型转换它是如何工作的?