简介

inline放在函数返回类型前修饰函数,被修饰的函数就叫做内联函数。

static inline void function(void)

在C语言中,函数调用时保存现场,函数中变量的使用等都会占用栈空间。而且进入函数前的保存现场,跟函数调用结束后的恢复现场都需要时间花销。

当函数的调用代价大于直接将代码拷贝到运行程序中时,我们就会使用inline关键字建议编译器将函数直接拷贝到函数调用中直接运行来换取函数的调用。(例如:经常需要调用某简短的函数时)

(注意:inline是向编译器提建议,不是命令编译器,所以加inline修饰的函数是否变成内联函数,这由编译器做决定!!)

使用方法

inline的使用方法其实是固定的,它定义在头文件中,并用static修饰。

//inline.h
#include <stdio.h>void func1(void);static inline void ile(void)
{printf("I'm inline function!\r\n");
}

在使用此内敛函数的文件中包含此头文件即可。

//main.c
#include "inline.h"int main (int argc, char **argv)
{func1();ile();return 0;
} 

奇怪了,在C程序中,函数的定义不是放在.c文件中的吗?为啥你的inline函数要放在.h文件中呢?

这就从inline的原理上说起,inline是将调用处的函数名直接由函数体的拷贝替换掉。

编译的时候我们就要知道函数体在哪,所以必须要将它的定义放在头文件中,然后包含到调用的文件中。

还有重要一点就是,要加static修饰,因为是简单的拷贝,如果不加的话,编译时就会报错说你重复定义函数。

经查看编译后的.o文件中可以看到函数体被拷贝到了调用inline函数的文件中。

C语言关键字之inline相关推荐

  1. C语言关键字你知道几个?

    C语言关键字大全 关键字的基本概念: 被c语言赋予了特殊的含义的单词 关键字特征:全部都是小写 注意:关键字不能用做变量名 ANSI C标准C语言共有32个关键字: 数据类型关键字(12个) char ...

  2. c语言关键字_C语言初学者必须掌握的关键字!

    相信这么努力的你 已经星标了我 老九学堂 你身边的IT导师 其实小伙伴在写代码的时候,关键字还是用的比较多的,  今天大雄主要就平常中用到的常用关键字进行总结,便于小伙伴们更全面的理解其在代码中的意图 ...

  3. C/C++开发工程师面试题整理(一)——C语言关键字、预处理、静态变量全局变量、函数等

    整理一些找工作问到的题型和答案,加油吧,小菜鸡.不会的很多,感谢各位面试官的提问和解释,让我获益匪浅. 一.C语言关键字 1.关键字static的作用是什么(中兴面试题2020) 答:1.static ...

  4. c语言 char转int_C语言关键字及进制的转换你都知道吗?

    ​前面我们讲过 C语言简洁.紧凑 使用方便.灵活 那是什么使得C语言这么方便呢? 那就是关键字,或称保留字 C语言的关键字共有32个 根据关键字的作用 可分为 数据类型关键字 控制语句关键字 存储类型 ...

  5. c语言关键字不做标识符,C语言标识符、关键字、注释、表达式和语句

    这一节主要讲解C语言中的几个基本概念. 标识符 定义变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是标识符(Identifier). 标识符就是程序员自己起的名字,除了变量名,后面 ...

  6. c语言字母表关键字,读书笔记-C语言关键字

    001 关键字 C语言一共32个关键字 1. 声明和定义 在开始认识关键字前,必须要明白什么是声明,什么事定义: 定义:(编译器)创建一个对象,为这个对象分配一段内存并给他取上一个名字.在一个作用域内 ...

  7. c语言getchar用法_C语言 — 关键字

    几十个关键字不多,用得多了自然会记住,相信大家也不会担心.下面是C语言中的 32 个关键字: 一丶C语言关键字 第一个关键字:auto 用来声明自动变量.可以显式的声明变量为自动变量.只要不是声明在所 ...

  8. 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...

    问题:[单选题]以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( ) 更多相关问题 进程从运行状态变为等待的原因可能是() 进程调度主要负责() 在下列叙述中,错误的一 ...

  9. 根据作用C语言关键字分为,C语言 关键字

    关键字就是已被C语言本身使用,不能作其它用途使用的字.例如关键字不能用作变量名.函数名等 由ANSI标准定义的C语言关键字共32个. 根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两 ...

  10. C语言关键字----Const

    C中CONST的使用: 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题. 问题:const变量 & 常量 为什么下面的例子在使用一 ...

最新文章

  1. Python学习笔记:Import详解2
  2. 计算机网络-思维导图(1)概述
  3. python中socket实现代理功能_python实现代理服务功能实例
  4. springboot2 多线程写入数据_解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题...
  5. 生成简单的Makefile文件(Python实现)
  6. anylogic中如何构建复杂网络_如何对复杂网络建模所需要的数据进行预处理
  7. android -------- Data Binding的使用 ( 四 )ListView
  8. 贝壳宣布内部调查实质性完成
  9. 基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达
  10. leetcode [53]最大子序和/Maximum Subarray C++ 暴力解法和贪心解法
  11. 决策树系列(四)——C4.5
  12. 模型预测控制的缺点_模型预测控制(MPC)与最优控制的理论分析 | NeurIPS 2020
  13. 2021年高压电工考试题及高压电工模拟考试
  14. BOS启动的客户端,打开序时簿只显示一行
  15. Mac本终端连接服务器
  16. 笔记本 ubuntu 亮度调节 命令行
  17. xshell xftp下载
  18. 5G+边缘计算 物联网嵌入式边缘计算平台
  19. LaTeX常用操作:添加标题、作者、时间、摘要、标题、段落、目录、字体、引用、脚注、图片\表格插入、数学符号、公式、交叉引用等
  20. gurobi解的状态及其属性获取

热门文章

  1. 使用Hex2Bin软件将Hex文件转Bin文件
  2. 计算机组成原理白中英课后习题题答案
  3. 深度补全(一)-论文阅读-翻译(Depth Map Prediction from a Single Image using a Multi-Scale Deep Network)
  4. 计算机等级考试四级--软件工程
  5. 基于JSP的图书管理系统
  6. 2021-03-05 网站资源数据搜集
  7. MATLAB VMD分解 变分模态分解 信号预处理 特征提取 及其改进算法
  8. STC8H8K系列汇编和C51实战——实现跑马灯(汇编版)
  9. VScode远程连接linux
  10. c 语言与试验系统,Turbo C/C++软件学习下载