我曾嘗試推行sizeof操作符。我這樣做了..執行sizeof操作符的
#define my_sizeof(x) ((&x + 1) - &x)
但它總是在給結果爲「1」,結束了對任一數據類型..
我有那麼GOOGLE了它這個..我發現代碼類型強制轉換
#define my_size(x) ((char *)(&x + 1) - (char *)&x)
而且代碼工作,如果它是類型強制轉換.. I D ONT明白爲什麼..此代碼也填充結構完美..
它還工作
#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
任何人都可以請解釋它是如何工作的,如果類型強制轉換,如果沒有類型強制轉換?
在此先感謝..
投射到'unsigned int'是一個壞主意。 'uintptr_t'更好,但仍然涉及一個惱人但不可避免的隱式轉換。 –