開發平台: VC++ , Windows
使用行內涵式時,修飾詞inline會告知編譯器,
每當程式碼呼叫此函式時,就會產生一函式副本來取代該函式呼叫,
以便節省呼叫函式的時間。
也就是說,
程式控制權一直在main()裡面(假設在main中呼叫inline函式),
而非每次呼叫函式時便轉移控制權到該函式。
如何在vs2005平台偵錯模式中觀察這個差異?
在專案->屬性
使用行內涵式時,修飾詞inline會告知編譯器,
每當程式碼呼叫此函式時,就會產生一函式副本來取代該函式呼叫,
以便節省呼叫函式的時間。
也就是說,
程式控制權一直在main()裡面(假設在main中呼叫inline函式),
而非每次呼叫函式時便轉移控制權到該函式。
如何在vs2005平台偵錯模式中觀察這個差異?
在專案->屬性
在屬性視窗中,預設debug mode 的內嵌函式展開屬性為"預設"
要觀察行內涵式的反組譯須把偵錯模式改為release,內嵌行式展開設為"僅_inline"
避免編譯時因最佳化關係自動把函式inline起來
~觀察反組譯~
inline function 程式碼已內嵌
一般函式叫用,可以看到第4行 :0040106B call countcubeVolume1 (401140h)
程式執行至此,會call countcubeVolume1 。
沒有留言:
張貼留言
try comments