对于inline函数,如果gcc的优化选项未开启的话(我们core中的优化选项是O0,等价于未开启),inline函数实际上是不生效的。
未开启gcc优化的情况下,如果要使用inline函数,可以使用__attribute__ ((always_inline))属性。
static inline void test_inline()
static __attribute__ ((always_inline)) void test_inline_attr()
arm-hisiv200-linux-gcc -S -O0 inline.c
编译出来的汇编,test_inline未内联,test_inline_attr内联了
arm-hisiv200-linux-gcc -S -O1 inline.c
编译出来的汇编,test_inline和test_inline_attr均内联了
本文深入探讨了GCC编译器中inline函数的行为,特别是在不同优化级别下inline函数的内联效果。介绍了当优化选项未开启时,如何通过__attribute__((always_inline))属性强制内联函数,以及在O1优化级别下inline函数的默认行为。

被折叠的 条评论
为什么被折叠?



