→ bibo9901: 我用 clang -O3 編出來的llvm-ir是一樣的 01/05 11:55
→ bibo9901: 其實-O2就一樣了 01/05 11:57
→ azureblaze: 如果 ptr == ptr->a 呢? 01/05 12:00
→ azureblaze: 這叫pointer aliasing 01/05 12:00
→ bibo9901: gcc-4.9 也給出一樣的assembler 01/05 12:01
→ azureblaze: 樓上可以試試看如果a的型態是ptype*會怎樣 01/05 12:03
→ bibo9901: clang: 兩者仍然一樣, 而且直接用 memset 0 寫入a,b,c 01/05 12:09
→ bibo9901: gcc: 產出結果完全一樣 01/05 12:10
→ bibo9901: 還是我誤會了什麼? 01/05 12:20
推 Killercat: myObj*如果是volatile 或者myObj->ptr是volatile? 01/05 12:44
→ Killercat: 這其實沒啥面試價值,當場gcc -S一下不就知道了嗎.... 01/05 12:45
居然可能是一樣的啊@@
那我也不知道面試官要的是什麼答案......
現在才知道gcc能夠給出assembler,又學一招,
感謝!
※ 編輯: penknifelee (1.162.99.11), 01/05/2015 14:19:44
推 littleshan: 如果沒有給Obj的定義,其實它有可能是union... 01/05 14:23
→ uranusjr: 同猜 volatile, 沒給定義的話根本編不過也沒什麼好討論 01/05 14:49
→ Killercat: 其實我覺得小善正解,union很有可能是面試官想問的XD 01/05 21:04
推 kwpn: 有大大能回文, 若Obj是union的話會怎樣嗎? 01/05 23:30
→ Killercat: er....a b c share同一塊空間 你覺得會怎樣(汗 01/05 23:34
→ Killercat: 應該說Obj是不是union不重要 Obj->ptr是不是才是重點 01/05 23:34
→ freef1y3: 但是這樣好像也不影響結果?最後都是c的結果會保留下來 01/06 11:54
→ freef1y3: 啊沒事..看了LPH大的文章了解了 01/06 11:57
推 kkmoon5566: 小善是誰 08/29 20:58