作者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/cn.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