[inline]C99中inline的使用

原创 2015年07月11日 00:18:30
   问题描述:C语言中函数调用与返回时会有部分的额外开销,如果在函数需要调用的次数非常多时,这些额外开销就会产生积累效应。C89中避免函数额外开销的唯一方式是使用带参数的宏。而C99中则提供了更好的一种方式,即内联函数inline。内联表明编译器将函数的每一次调用都用函数的机器指令来代替,但其只是建议编译器这样做,并不强制,编译器可以选择忽略。
   使用宏造成的缺陷:宏定义在形式上类似于一个函数,但在使用时,仅仅只是做简单替换,因此它不能进行参数有效性的检测,无法执行编译器严格类型检查,另外它的返回值也不能被强制转换为可转换的合适的类型。
   内联函数的使用注意:声明为内联函数的函数但没有extern时,该函数定义在该文件中是内联的,当被外部文件调用时会认为错误。如需在其他地方使用该函数,需在另一个文件中为其提供外部定义。
static inline double average(double a, double b)
{
    return(a+b)/2;
}
然后再新建一个average.h文件,
#ifndef _AVERAGE_H_
#define _AVERAGE_H_

inline double average(double a,double b)
{
   return(a+b)/2;
}
#endif
   内联函数的限制:
   函数中不能定义可改变的static变量;
   函数中不能引用具有内部链接的变量。
   内联函数一般只会用在函数内容非常简单的时候,这是因为内联函数的代码会在任何调用它的地方展开,如果函数太复杂,代码膨胀带来的恶果很可能会大于效率的提高带来的益处。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

GCC and C99 inline .

http://superding.spaces.live.com/Blog/cns!89E842A8485366C7!1137.entry http://www.greenend.org.uk/rj...

GCC and C99 inline

C语言的inline 转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~  ...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

inline的使用

inline 的作用还是在于和 static 一起使用,让小函数尽可能的减小开销甚至消除函数开销。 restrict 最重要的还是在于编译器的优化上。 有一个很重要的地方,称为指针别名,是阻碍编译...

inline解析

一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。   表达式形式的宏定义一例:   #define ExpressionName(Var1,...

display:inline margin padding是否起作用

行内非替换元素span, display的方式为inline(默认) *{padding:0px;margin:0px;} p{background:gray;position:relative;...

C++ inline 函数

C++ inline 函数 (一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。       i...

inline函数

(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。       inline int min(int...

ie6下多个a标签折行bug

ie6下发现多个a标签block块级化浮动后回车排列,宽度总和=父元素div宽度的时候,最后一张没办法排成一行。找了好久发现是ie6下面回车会吧空格计算进去,而且在去网络上查找inline-block...
  • eadio
  • eadio
  • 2015-01-23 14:52
  • 314

了解inline函数(Effective_C++(30))

1.类似于C中的#define  在C++中,提供了inline函数来代替C中的宏定义。(通常可以使用const来代替单纯变量的宏定义,它可以提供类型检查。对于形似函数的宏,最好改用inline函数来...

C++inline函数阐述

在何时使用inline函数: 首先,你可以使用inline函数完全取代表达式形式的宏定义。 另外要注意,内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在任何调用它的地方展开...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)