C中的inline functions
说明
inline函数指示符(inline function specifier)是为了减少function调用时产生的开销,让函数调用尽可能的快速。这一特性是在C99标准加入的。inline只是对编译器的一种建议,编译器并不一定必须对标识为inline的函数进行优化。因此inline函数不能过于复杂。
inline函数需要是internal linkage,而函数默认是具备external linkage,此类函数是无法标识为inline,编译时会出现错误,gcc会提示“undefined reference to xxx”。所以使用inline时,一般要与static标识符一起使用。
实现
1 // header.h 2 #include <stdio.h> 3 inline static void inline_function() { 4 printf("inline function\n"); 5 } 6 7 // main.c 8 #include "header.h" 9 int main(void) { 10 inline_function(); 11 12 return 0; 13 } 14 15 或 16 17 // main.c 18 inline static void inline_function() { 19 printf("inline function\n"); 20 } 21 22 int main(void) { 23 inline_function(); 24 25 return 0; 26 }
inline函数的定义必须要出现在调用之前,否则编译会因找不到函数定义而报错
参考
C primer plus 6th
C Programming a modern approach 2nd