gcc悄无声色将静态函数内联了
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,说到内联,可能你还停在十几年前甚至二十多年前的C++教典,c++有内联关键字inline,甚至还用来与c做区分。c99开始c引入inline,gcc比c99早实现对inline支持,vc中c没有关键字
千家信息网最后更新 2026年11月01日gcc悄无声色将静态函数内联了
说到内联,可能你还停在十几年前甚至二十多年前的C++教典,c++有内联关键字inline,甚至还用来与c做区分。c99开始c引入inline,gcc比c99早实现对inline支持,vc中c没有关键字inline,inline只能用于c++,但有另一关键字__inline,但若你要用vc编译gcc下c代码,遇到cl抱怨不识别inline,只要将inline在预编译宏中定义为__inline也就可以了。
gcc编译器属性中还有一个noinline,有了inline为什么还要来一个noinline。没有用inline不就等于noinline了吗。还有always_inline属性。因为在实际中,定义为inline也不一定统统都会被内联,内不内联最后是由gcc编译器决定,只是你的声明会影响它的决定。同样你没有定义为inline,函数就不一定都隔离内联,编译器在优化中通常会为你决定内联了一些函数,不论这个函数体积是大是小。noinline和always_inline属性就是字面意义那样了。
正好近日调试ffmpeg代码,碰上一例子,用来作例证:
ffmpeg是个c代码项目。
avformat_write_header是一个只有十行的函数,就是调用其它函数。
init_muxer是个体积比较大的静态函数,没有定义为内联,却内联到了一个体积很小的函数(avformat_write_header)内。
函数
编译
代码
关键
关键字
属性
编译器
体积
就是
c++
静态
个体
例子
例证
只是
只有
多年
字面
实际
常会
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网科技网
江苏根荣互联网科技
互联网未来科技
智慧科技互联网
互联网科技网站
上海卓越科技 互联网
成都仁贤领冠互联网科技有限公司
济南和联互联网科技有限公司
科技赋能互联网健康
互联网科技有哪些公司
浙江互联网科技研学营
宝灵互联网科技有限公司
世界互联网领先科技成果获奖
滨湖区互联网智能科技产品有哪些
广州千川互联网科技有限公司
陕西云淼互联网科技公司
互联网科技新闻
互联网对科技影响
科技互联网企业在行动
互联网高科技
湖北九亚互联网络科技有限公司
云信互联网科技有限公司
互联网电商科技
百单互联网科技有限公司
移动互联网年度科技创新
未来五年的互联网科技
朱啸虎曾投资哪些互联网科技企业
广州富喜互联网络科技
东风日产互联网科技公司叫什么