7
我的一個朋友最近出現在NVIDIA的採訪,他被要求implement his own sizeof in C
的。我試圖做同樣的練習,併成功地寫sizeof
其中之一的兩個不同的定義可以處理變量和其他可以處理的數據類型,但我不能將二者合併。有沒有辦法做到這一點?此外,有可能實現C.一個完整sizeof
手柄類型,如int
,char
等
#define my_sizeof(type) ((size_t)(((type *)0) + 1))
處理變量一樣x
#define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))
當然,這些只是工作,因爲編譯器有效地調用的sizeof()的引擎蓋下。 .. :) –
對於像你這樣的學習者來說,實現container_of和offset_of宏是個好主意。良好的學習! – Saurabh
難以/不可能的一個原因當然是'sizeof'不是一個函數。這個問題有點像「是否有一種方法可以在C中實現'=',而不使用'='?」。 – unwind