sizeof演算子を実装してみました。私はこのようにしました:
#define my_sizeof(x) ((&x + 1) - &x)
しかし、どちらのデータ型でも結果は常に「1」になります。
それから私はそれをグーグルで検索しました、そして私は次のコードを見つけました:
#define my_size(x) ((char *)(&x + 1) - (char *)&x)
そして、タイプキャストされている場合、コードは機能しています。理由はわかりません。このコードは、構造を完全に追加しています。
それはまたのために働いています:
#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
タイプキャストされた場合、それがどのように機能するかを誰かが説明できますか?