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

 

posted @ 2020-10-29 10:19  zzxop  阅读(135)  评论(0)    收藏  举报