implementação do operador sizeof

Eu tentei implementar o operador sizeof .. Eu fiz assim ..

#define my_sizeof(x) ((&x + 1) - &x)

Mas sempre acabava dando o resultado como '1' para qualquer um dos tipos de dados.

Eu pesquisei por isso ... e encontrei o códigotypecasted

#define my_size(x) ((char *)(&x + 1) - (char *)&x)

E o código está funcionando se for typecasted .. Eu não entendo por que .. Este código também é o PADDING de uma ESTRUTURA perfeitamente ..

Também está trabalhando para

#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)

Alguém pode por favor explicar como está funcionando se typecasted e se não typecasted?

Desde já, obrigado..

questionAnswers(8)

yourAnswerToTheQuestion