[問題] inline 函數的位址

作者: holydc (のヮの)   2015-06-14 03:07:21
大家好
就我的理解,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 的話跑久了是不是會浪費很多時間
謝謝大家
作者: LPH66 (-6.2598534e+18f)   2015-06-14 03:21:00
你跟他要位址他就得生一個出來給你所以透過這樣得來的函式指標呼叫當然就不具 inline 性質(該說透過函式指標呼叫什麼最佳化都做不了, 變因太多了)
作者: holydc (のヮの)   2015-06-14 03:58:00
了解... 非常感謝
作者: PkmX (阿貓)   2015-06-14 04:12:00
-flto 開下去沒什麼解決不了的事情 (誤

Links booklink

Contact Us: admin [ a t ] ucptt.com