一、C++ 编译优化 - 没有 inline 关键字修饰的函数也可能被内联
1、函数内联的不确定性
现在的 C++ 编译器能够进行编译优化 ,
使用了 inline 声明的 内联函数 , 编译器 可能不会允许该函数...来决定的 ;
不能保证所有函数都会被内联 ;
即使函数被内联 , 也不能保证 程序的性能 一定会提高 ;
2、C++ 编译器的内联优化
简单且频繁调用的函数 内联大概率成功 , 复杂的函数 大概率内联失败...;
编译器在决定是否内联函数时 , 会考虑函数的复杂性 , 大小和调用次数等因素 ;
如果 函数比较简单 且被频繁调用 , 编译器可能会选择将其内联 , 以提高程序的执行效率 ;
二、C++ 编译器内联限制...; 一般是不能超过 20 ~ 30 个条件判断语句 , 具体数目可以通过编译器配置 ;
函数体庞大 : 函数体的代码不能太多 , 函数指令太多 , 在调用位置插入的指令就很多 , 会浪费很多代码空间..., 内联直接失败 ;
内联函数声明在调用之后 : 由于内联函数不能进行声明操作 , 内联函数的声明与定义必须在一起 , 如果内联函数调用在声明定义之前 , 说明该内联函数进行了单独的声明 , 该函数的内联一定会失败