[問題] inline 函數的位址

看板C_and_CPP (C/C++)作者 (のヮの)時間10年前 (2015/06/14 03:07), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
大家好 就我的理解,inline 會直接將函數程式碼展開,而非 jump 到他的位址 這麼一來如果試著取得他的位址,是合理的動作嗎 比方說 inline int add(int lhs, int rhs) { return (lhs + rhs); } inline int sub(int lhs, int rhs) { return (lhs - rhs); } int(*)(int, int) getOperator(char op) { switch (op) { case '+': return &add; case '-': return ⊂ default: return nullptr; } } 這樣拿到的位址是有意義的嗎 假如有,是否表示 binary 中有他的 symbol 可以連結,且 inline 就無效了 因為這兩個函數很短,沒有 inline 的話跑久了是不是會浪費很多時間 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.125.4 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434222445.A.8D7.html

06/14 03:21, , 1F
你跟他要位址他就得生一個出來給你
06/14 03:21, 1F

06/14 03:22, , 2F
所以透過這樣得來的函式指標呼叫當然就不具 inline 性質
06/14 03:22, 2F

06/14 03:23, , 3F
(該說透過函式指標呼叫什麼最佳化都做不了, 變因太多了)
06/14 03:23, 3F

06/14 03:58, , 4F
了解... 非常感謝
06/14 03:58, 4F

06/14 04:12, , 5F
-flto 開下去沒什麼解決不了的事情 (誤
06/14 04:12, 5F
文章代碼(AID): #1LV7zjZN (C_and_CPP)
文章代碼(AID): #1LV7zjZN (C_and_CPP)