u013648963 2016-07-04 14:03 采纳率: 0%
浏览 942

请教个inline的问题,感激不尽

看到网上有人说inline函数完全可以替代函数式的宏,还列出了一堆好处,但查了一下inline函数是否被展开要看编译器,既然要看编译器,那inline函数怎么能完全替代函数式的宏,因为宏一定展开,但inline函数却不一定展开。
我用gcc编译时inline函数没有被展开,加了优化选项-O2后,inline函数被展开了,
但看到网上说-O2优化选项可能把一些重要的代码优化(删除)掉。想问一下,如何既能使用inline带来的好处,又不担心-O2选项优化掉一些代码?大家平时用gcc编译的时候都会用-O1/-O2/-O3等优化选项吗?如果用优化选项,如何确定哪些代码会被优化掉呢?本人纯新手。

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-07-04 16:29
    关注

    默认情况下,gcc只会展开同一个文件下的inline,外部文件调用不展开。另外如果有递归不展开,虚函数、可变参数等不展开。

    评论

报告相同问题?

悬赏问题

  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法