作者gecer (gecer)
看板C_and_CPP
標題[問題]Macro & function的差異
時間Sun Jun 18 19:08:23 2017
As the title , 小弟一直不解 Macro 跟function的差異 google搜尋到的僅是macro 是
preprecessor 不用定義type 小弟想更進一步了解 macro 跟function 對compiler會不
一樣嘛?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.174.37
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1497784106.A.4F3.html
1F:→ a1u1usul3: macro只是簡寫的感覺,preprocess過後會長回去 06/18 20:25
2F:推 cuteSquirrel: Macro只是純文字替換。 06/18 20:35
3F:→ cuteSquirrel: Function則是進行函式呼叫,會建立call stack,進入 06/18 20:39
4F:→ cuteSquirrel: 函式時push參數列,離開函式時pop並且return 回傳值 06/18 20:39
5F:→ cuteSquirrel: ,program counter回到Return Address。 06/18 20:39
6F:→ cuteSquirrel: 兩者是不同的。 06/18 20:39
7F:→ jaid: macro由preprocessor處理,而不是compiler 06/18 20:42
8F:→ MOONRAKER: 2-3樓的解釋你可以背下來 不是標準也非常接近了 06/19 10:54
9F:推 purpon: Macro 只是文字替換吧。如果marco裡面有包函式,還是會有c 06/19 23:37
10F:→ purpon: all stack 06/19 23:37
11F:推 CoNsTaR: C/C++ 的巨集可以看成是一種 inconsistant 的 metaprogra 06/20 01:57
12F:→ CoNsTaR: mming 06/20 01:57
13F:→ CoNsTaR: language 06/20 01:57
14F:→ MOONRAKER: inconsistent. 06/20 10:12
15F:推 Killercat: Macro怎麼處理 查一下gcc -E就知道了 06/20 11:13
16F:→ Killercat: 相信大多數人看到了輸出以後都會恍然大悟 (?) 06/20 11:14
17F:推 CoNsTaR: MOONRAKER thank you 06/20 23:57