比如:
inline void FuncA(_T para) { FuncB(para, para+1); } void FuncB(_T paraA, _T paraB) { //Something } 我试了下是可以通过编译的,函数运行也正常。 我想知道在编译时,FuncA调用的地方直接使用一句“ FuncB(para, para+1); ”进行替换, 还是说整个FuncB也会被展开塞进代码里?或者说对于这种情况编译器不会生成内联函数?
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
至于 整个FuncB也会被展开塞进代码里? 这是函数FuncB 会不会内联的问题,和函数FuncA 没有任何关系 可以内联的话 FuncB 被内联进 FuncA 编译器对内联成功的代码,自然不会还原成函数调用了 FuncB不可以内联,那么 FuncA 就被内联成对FuncB函数调用 FuncB可以内联 那么内联 FuncA 就被已经内联到FunA的内部FuncB内内联后的代码取代了, 也就是 FuncB,FuncA 都内联了
注意到FuncB 没有inline 所以不是一定会内联的,所以就看编译器心情了(设定了), 即便很容易内联,因为没有指定,所以就不确定了
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!