内联函数是否真的内联,和编译选项有关

对于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均内联了

你可能感兴趣的:(linux)