看到网上有人说inline函数完全可以替代函数式的宏,还列出了一堆好处,但查了一下inline函数是否被展开要看编译器,既然要看编译器,那inline函数怎么能完全替代函数式的宏,因为宏一定展开,但inline函数却不一定展开。
我用gcc编译时inline函数没有被展开,加了优化选项-O2后,inline函数被展开了,
但看到网上说-O2优化选项可能把一些重要的代码优化(删除)掉。想问一下,如何既能使用inline带来的好处,又不担心-O2选项优化掉一些代码?大家平时用gcc编译的时候都会用-O1/-O2/-O3等优化选项吗?如果用优化选项,如何确定哪些代码会被优化掉呢?本人纯新手。
请教个inline的问题,感激不尽
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 求采集电商背景音乐的方法