[问题] 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