[問題] 行內涵式在vs2005 偵錯模式中的觀察

看板C_and_CPP (C/C++)作者 (下棋象嗎~)時間15年前 (2010/07/14 10:51), 編輯推噓5(509)
留言14則, 4人參與, 最新討論串1/1
開發平台: VC++ , Windows 使用行內涵式時,修飾詞inline會告知編譯器, 每當程式碼呼叫此函式時,就會產生一函式副本來取代該函式呼叫, 以便節省呼叫函式的時間。 也就是說, 程式控制權一直在main()裡面(假設在main中呼叫inline函式), 而非每次呼叫函式時便轉移控制權到該函式。 想請教大大們,我如何在vs2005平台偵錯模式中觀察這個差異? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.169.112.10

07/14 11:03, , 1F
disasm window拉出來看inline前後有沒有 call xxxx ??
07/14 11:03, 1F

07/14 11:04, , 2F
不過, inline好像不一定會成功就是, 函數寫簡單點也許比
07/14 11:04, 2F

07/14 11:04, , 3F
較好測; 另外記得用debug mode, 免得compiler optimizer
07/14 11:04, 3F

07/14 11:04, , 4F
把太簡單的函數又自動幫你inline起來了....@_@"
07/14 11:04, 4F

07/14 11:40, , 5F
抱歉更正一下, 剛拿VC2005試, debug mode反而一定不會
07/14 11:40, 5F

07/14 11:40, , 6F
inline, 用release build的code function才會被inline;
07/14 11:40, 6F

07/14 11:41, , 7F
release build的Project->Properties->Configuration
07/14 11:41, 7F

07/14 11:41, , 8F
->C++->Optimization->Inline Function Expansion
07/14 11:41, 8F

07/14 11:42, , 9F
=> 改設 Only __inline (/Ob1), 這樣你的function定義,
07/14 11:42, 9F

07/14 11:43, , 10F
有沒有加 inline 修飾子, disasm看下去結果就不同了.
07/14 11:43, 10F

07/14 12:40, , 11F
推樓上認真實驗和觀察
07/14 12:40, 11F

07/14 13:56, , 12F
推實驗精神 \(^▽^)/
07/14 13:56, 12F

07/14 14:03, , 13F
謝謝勝利大大的講解,學習起來了^^
07/14 14:03, 13F

07/14 14:32, , 14F
剛好有空檔自己試一下啦, 沒想到跟開始想的真的有差^^||
07/14 14:32, 14F
文章代碼(AID): #1CFIPEAn (C_and_CPP)
文章代碼(AID): #1CFIPEAn (C_and_CPP)