[問題]Macro & function的差異

看板C_and_CPP作者 (gecer)時間7年前 (2017/06/18 19:08), 編輯推噓5(5012)
留言17則, 7人參與, 最新討論串1/1
As the title , 小弟一直不解 Macro 跟function的差異 google搜尋到的僅是macro 是 preprecessor 不用定義type 小弟想更進一步了解 macro 跟function 對compiler會不 一樣嘛? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.174.37 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1497784106.A.4F3.html

06/18 20:25, , 1F
macro只是簡寫的感覺,preprocess過後會長回去
06/18 20:25, 1F

06/18 20:35, , 2F
Macro只是純文字替換。
06/18 20:35, 2F

06/18 20:39, , 3F
Function則是進行函式呼叫,會建立call stack,進入
06/18 20:39, 3F

06/18 20:39, , 4F
函式時push參數列,離開函式時pop並且return 回傳值
06/18 20:39, 4F

06/18 20:39, , 5F
,program counter回到Return Address。
06/18 20:39, 5F

06/18 20:39, , 6F
兩者是不同的。
06/18 20:39, 6F

06/18 20:42, , 7F
macro由preprocessor處理,而不是compiler
06/18 20:42, 7F

06/19 10:54, , 8F
2-3樓的解釋你可以背下來 不是標準也非常接近了
06/19 10:54, 8F

06/19 23:37, , 9F
Macro 只是文字替換吧。如果marco裡面有包函式,還是會有c
06/19 23:37, 9F

06/19 23:37, , 10F
all stack
06/19 23:37, 10F

06/20 01:57, , 11F
C/C++ 的巨集可以看成是一種 inconsistant 的 metaprogra
06/20 01:57, 11F

06/20 01:57, , 12F
mming
06/20 01:57, 12F

06/20 01:57, , 13F
language
06/20 01:57, 13F

06/20 10:12, , 14F
inconsistent.
06/20 10:12, 14F

06/20 11:13, , 15F
Macro怎麼處理 查一下gcc -E就知道了
06/20 11:13, 15F

06/20 11:14, , 16F
相信大多數人看到了輸出以後都會恍然大悟 (?)
06/20 11:14, 16F

06/20 23:57, , 17F
MOONRAKER thank you
06/20 23:57, 17F
文章代碼(AID): #1PHbygJp (C_and_CPP)