C语言关键字之inline_c语言 inline-程序员宅基地

技术标签: C语言经典题目  c语言  

简介

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函数的文件中。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46259846/article/details/125495262

智能推荐

Error 1 error MSB8020: The build tools for v140 (Platform Toolset = 'v140')_error msb8020:the build tools for-程序员宅基地

文章浏览阅读2.5w次,点赞7次,收藏9次。解决办法:_error msb8020:the build tools for

JAVA中常见对象_编写类a.a,包含方法static int[] a(int[] x,int y),删除数组x的下标为-程序员宅基地

文章浏览阅读104次。常见对象1. 数组高级冒泡排序数组排序之冒泡排序: 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处*/public class ArrayDemo {public static void main(String[] args) {// 定义一个数组int[] arr = { 24, 69, 80, 57, 13 };System.out.printl..._编写类a.a,包含方法static int[] a(int[] x,int y),删除数组x的下标为y的元素,返

PAT 甲级 A1097_pat 甲级1097-程序员宅基地

文章浏览阅读190次。1097 Deduplication on a Linked List (25分)题目描述Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated absolute values of the keys. That is, for each value..._pat 甲级1097

MySQL数据修改语句_mysql修改数据语句-程序员宅基地

文章浏览阅读3.6w次,点赞19次,收藏29次。MySQL数据修改语句在 MySQL中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。基础语法UPDATE 语句的基本语法使用 UPDATE 语句修改单个表,语法格式为:UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ][ORDER BY 子句] [LIMIT 子句]语法说明如下:<表名>:用于指定要更新的表名称。SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也_mysql修改数据语句

批量激活管理工具VAMT 3.0的安装与基本使用方法简介-程序员宅基地

文章浏览阅读2k次。VAMT(VolumeActivationManagementTool)是微软开发的批量激活管理工具,它可让网络管理员及其他IT专业人员自动管理和集中管理Windows、MicrosoftOffice和选择其他Microsoft产品批量及零售激活过程。可以使用多次激活密钥或Windows密钥管理服务(KMS)管理批量激活。VAMT是标准的..._volume activation management tool

Yii2.0多文件上传实例及php yii2.0图片上传指南-程序员宅基地

文章浏览阅读98次。创建控制器FormControllernamespace frontend\controllers;use Yii;use yii\web\Controller;use frontend\models\Uploadm;use yii\web\UploadedFile;class FormController extends Controller{public function actionMyfi..._php file ->saveas

随便推点

pm2 教程,pm2管理非node应用,linux 服务器重启pm2 list列表为空、pm2常用命令-程序员宅基地

文章浏览阅读3.1k次。pm2学习使用一、pm2 安装二、pm2 常用命令三、pm2 管理非node应用1. 如图创建 redis-server.json2. redis 交给 pm2管理3. 保存 pm24. 开机运行pm2四、linux 服务器重启pm2 list列表为空一、pm2 安装​npm install -g pm2二、pm2 常用命令pm2 start app.js --watch ..._pm2 list

MATLAB中三维向量的绘制以及坐标点的推算(quiver3,quiver,plot3,plot)_matlab quiver3函数-程序员宅基地

文章浏览阅读8.5k次,点赞4次,收藏34次。多维数组值传递、quiver3、quiver、plot3、plot等用法以及向量归一化问题实例解析!_matlab quiver3函数

指数、对数、级数_对数数量级-程序员宅基地

文章浏览阅读1.3k次。1. 指数 指数是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数,指数位于底 数的右上角,幂运算表示指数个底数相乘2. 对数 在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数3. 级数 级数是指将数列的项依次用加号连接起来的函数。..._对数数量级

java service wrapper jar 服务_使用Java Service Wrapper将jar包安装成Windows服务-程序员宅基地

文章浏览阅读173次。encoding=UTF-8# Configuration files must begin with a line specifying the encoding# of the the file.#********************************************************************# Wrapper License Properties (..._pwijar

IPD——从战略到执行的全面研发管理体系_周辉产品管理 四四四模型-程序员宅基地

文章浏览阅读2.1w次,点赞8次,收藏59次。《产品研发管理》的作者是周辉,是全面研发管理的一本佳作,本人拜读多次,每次都有新的收获。为了使瞬间的感悟得以保留,特记录笔记备查。这本书非常好的一点,是在每一章开头都会有【本章精华】的提炼,短短的几条,就已经受益匪浅,有同读此书的朋友,这些内容万不可错过。同时,在网上发现一篇非常好的文章《30分钟了解:基于IPD的产品研发管理》,是作者结合读书和实践而成,值得一看。这篇日记来自于书中第1章第3节关于【如何实现集成产品开发管理模式】中的内容,用“四四四”模型给予研发管理体系一个高视角的全貌展示。模_周辉产品管理 四四四模型

树莓派python爬虫 股票_利用树莓派跑python爬虫的简单教程——从无到有-程序员宅基地

文章浏览阅读205次。因为学校项目的原因入手了树莓派,到手先折腾了两天,发现网上的教程大都是拿他搭建服务器,mail,或者媒体服务器之类,对于在学校限时的宽带来说有点不太现实,不过低功耗适合一直开着的确启发了我。所以想到拿他来跑教务系统爬虫,抓取学校学生学号之类。首先假设你的树莓派是全新的。需要去官网下载系统镜像,注意第一个noob是用来帮助启动并且安装系统的,如果你和我一样是个拿来做开发的学生=。= 可能连显示器都没..._树莓派python爬取交易系统