我也跟他說我coding很好
他就要考考我
考了兩題後 他發現太無趣了 就從一堆題目中找了一題出來
說這題過去沒幾個人講的出來
#define fun(A, b) (int)(&(((A *)0)->b))
typedef struct {
char str[40];
int type;
int maxLen;
} intf;
問題是fun(intf, maxLen)的值為多少看到第一眼時 先假裝鎮定 但不解 A * 的作用
因為腦殘沒看到typedef 想說A替換後只是變數不是型別
所以就靠推理的方式理解成強制轉型為pointer 並以此位置為0
所以b的位置就是 sizeof(char) * 40 + sizeof(int)
答案是對的 還告訴我它叫offset 差點被他唬到
回家查了一下
原來這個code是在stddef.h裡
目的是做出泛型計算變數在struct的offset
沒有留言:
張貼留言