c语言中的的内联(inline)函数

c/c++中的inline,使用在函数声明处,表示程序员请求编译器在此函数的被调用处将此函数实现插入,而不是像普通函数那样生成调用代码(申请是否有效取决于编译器)。一般地说,这样作的优点是省掉了调用函数的开销;缺点则是可能会增加代所生成目标代码的尺寸。

实际上,即使没有手工指定inline函数,编译器一般还会选择一些代码量较小但使用频繁的函数作为inline函数,以此作为性能优化的途径之一。

1. 和带参宏定义的比较

与带参宏定义相比,inline函数具备以下优点:

a.参数类型检查:宏定义中所使用的参数仅仅是在宏定义中被替换,不进行任何的类型检查
b.返回值:宏定义中无法使用return返回
c.便于调试

2. 注意

一般地,内联函数不能是递归函数或调用递归函数(递归调用会给函数体展开带来麻烦)。

inline应当是用于函数声明而非函数实现。但由于由于不同的编译器下inline关键字所修饰函数的调用范围不一致,因此,一种简单的作法是,将inline函数的声明和实现合一。如果确定函数仅应用于同一文件,我们可以将函数的声明和实现都放在.c/.cpp中;否则将其放入.h中(这样,包含了此头文件的任何文件都可以使用它)。

更多内容,请访问 http://blog.csdn.net/weixin_37977062?viewmode=contents

C语言inline函数相关推荐

  1. c语言 inline函数的总结,C++中inline函数详解

    本文主要记录了C++中的inline函数,也就是内联函数,主要记录了以下几个问题: 一.C++为什么引入inline函数? 主要目的:用它代替C语言中表达式形式的宏定义来解决程序中函数调用的效率问题. ...

  2. c语言inline不起作用,C语言inline内联函数学习小结

    //inline(内联)函数:将普通的函数定义为inline函数,可以避免普通函数入栈出栈的开销,它是将函数内的代码直接粘贴到调用处.除此之外,它和普通函数无异. //要成为inline函数必须具备以 ...

  3. c语言中inline用法,C语言陷阱与技巧第2节,使用inline函数可以提升程序效率,但是让inline函数生效是有条件的...

    打开 Linux 内核源代码,会发现内核在定义C语言函数时,有很多都带有 "inline"关键字,请看下图,那么这个关键字有什么作用呢? inline 关键字的作用 在C语言程序开 ...

  4. 【转】 嵌入式C语言编程中Inline函数的应用

    源地址:https://blog.csdn.net/vigour1000/article/details/9622037 有一段儿时间没写写经验笔记了,哎,也是自己这一段时间以来(其实最近一直是这个状 ...

  5. c语言inline详解

    本文介绍了GCC和C99标准中inline使用上的不同之处.inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而 ...

  6. C++ inline函数和宏

    1. 内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: int max(int a, int b) {return a > b ? a : b; } 为这么一个小的操作定义一个函数 ...

  7. 在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)

    变量定义(C语言中变量的声明和定义),哪吒游戏网给大家带来详细的变量定义(C语言中变量的声明和定义)介绍,大家可以阅读一下,希望这篇变量定义(C语言中变量的声明和定义)可以给你带来参考价值. 3.函数 ...

  8. C++之inline函数使用总结

    一.C++为什么引入inline函数? 主要目的:用它代替C语言中表达式形式的宏定义来解决程序中函数调用的效率问题. C语言中的宏定义,它使用预处理器实现,没有了参数压栈.代码生成等一系列得到操作,因 ...

  9. 《C++ Primer 第五版》(第6.3~6.7节)——返回指向数组/函数的指针,函数重载,默认形参、inline函数和constexpr函数

    1.返回指向数组/函数的指针 顾名思义,就是函数返回值为指向数组/函数的指针. 数组的性质:不能被拷贝,函数也不能返回数组.但可以返回数组指针/引用,声明一个返回数组指针的函数,有四种方式,一种是直接 ...

最新文章

  1. Android UI体验之全屏沉浸式透明状态栏效果
  2. ubuntu系统安装FTP
  3. OpenGL入门学习(十二) 【转】
  4. 为什么爬虫用python不用java_为什么常用Python,Java做爬虫,而不是C#C++等
  5. 南工程计算机学院贴吧,【计算机工程学院答疑转帖】
  6. Keil C 里面Lib库文件的生成与调用
  7. 【JAVA基础篇】注解
  8. SpringBoot入门(四)——自动配置
  9. vue-router-2-动态路由配置
  10. 从没有C到ANSI C的认识
  11. 8选1的多路选择器c语言代码,八选一数据选择器的VHDL程序
  12. 富士施乐m115b怎么连接电脑_富士施乐 Fuji Xerox DocuPrint M118w/M118z打印机无线连接设置详解...
  13. 男孩子不上学了学计算机要学历吗,十三岁男孩不上学,能学什么手艺?
  14. DBLink应用速成
  15. 如何将mac中的资料拷贝到U盘,移动硬盘(实用!!!)
  16. [转]谈爬虫反爬虫套路
  17. VSCode配置触动精灵开发环境
  18. 文件服务器raid1+5,服务器上的raid1 raid5,什么意思啊!
  19. 中国月入过万的人多不多
  20. Codeforces Round #672 (Div. 2) C2 - Pokémon Army (hard version)(贪心,维护变化值)

热门文章

  1. 11自由度非线性整车动力学模型微分方程介绍(汽车悬架、制动和转向三大子系统耦合)
  2. 业务重要?还是技术重要?
  3. 戴明质量管理14原则
  4. c语言 函数strdup,strdup函数使用误区
  5. workbench3.2用户手册学习笔记六
  6. 微信将整顿多级分销欺诈行为 严重者将永久封号
  7. 12年老年机安装ubuntu双系统
  8. asp.net1058-二手车交易网站——毕业设计
  9. hadoop源码阅读(一)(InputFormat源码)
  10. TYUT太原理工大学2022数据库题库选择题总结