gcc悄无声色将静态函数内联了
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,说到内联,可能你还停在十几年前甚至二十多年前的C++教典,c++有内联关键字inline,甚至还用来与c做区分。c99开始c引入inline,gcc比c99早实现对inline支持,vc中c没有关键字
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
技算机网络技术吃香吗
手游服务器如何增加模组
动态网页设计与数据库技术
开封网络安全教育平台
网络安全公司合理估值
一对一交友软件开发定制
c 中输入n组数据库
安装数据库闪退
软件开发公司的资质有什么
518服务器
信息网络安全杂志招聘
山东工控软件开发服务费
数据库中基本的存储单元
服务器16g内存价格
linux软件开发方向
服务器主板怎么连接网络
数据库例题16答案
软件开发技术特点范文
船舶网络数据库安全
青岛app软件开发教程
手机网游用什么服务器好
南山区数据网络技术开发工艺
恐龙岛显示没有服务器
河北什么是网络技术咨询
服务器多次点卡不出来
工程软件开发预算
数据库关系代数表达
樱花免费服务器
医院数据库运维的现状
网络安全日志格式