由于编译的优化,有些函数(比如小函数和
全工程里面只被一个人调用的函数
)虽然没有显示地写成inline,但是编译器优化为inline了,这给调试造成了一些麻烦,因为找不到这个函数对应的symbol了。
这个时候,我们可以显示地写明某些函数我们不想inline:
否则,上面2个函数,即便你代码里面没有写inline,由于O2和Os使能了相关的inline选项,也可能被编译器自动inline掉,如果我们想拒绝inline,可以通过noline来标识。
4.我不想被优化
在全局已经使能O1, O2, O3, Os的情况下,某个单独的函数我们不想做任何的优化,可以用
__attribute__((optimize("O0")))
来修饰这个函数,比如我们把上述用O2可以编译过的代码进行如下修改: