我是靠谱客的博主 清新电灯胆,最近开发中收集的这篇文章主要介绍C语言inline函数使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、简述:

inline函数,定义为inline函数之后,会省去函数调用的开销,直接嵌套汇编代码,取代函数调用,提高效率。

在函数声明或定义中函数返回类型之前加上关键字inline。

比如:inline int min(int first,int second){ /***********/ };


对于同一个程序的不同文件,如果inline函数出现的话,其定义必须相同。如果定义不相同,程序将会出现未定义的行为。

为保证不会发生这样的事情,建议把inline函数的定义放到头文件中。在每个调用该inline函数中包含该头文件。这种方法保证对每个inline函数只有一个定义,且程序员无需复制代码,并且不可能在程序的生命期中引起无意的不匹配的事情。


二、内联函数的编程风格

1)、关键字inline必须与函数定义体放在一起才能使得函数称为内联。仅将inline放在函数声明前面不起任何作用。   <高质量C/C++编程指南>

如下风格的函数Foo 不能成为内联函数:
inline void Foo(int x, int y);  // inline 仅与函数声明放在一起

void Foo(int x, int y) { } 


而如下风格的函数Foo 则成为内联函数:

void Foo(int x, int y);
inline void Foo(int x, int y)    // inline 与函数定义体放在一起 { }


2)、定义在类声明中的成员函数将自动成为内联函数

例如:

class A{

public:

void Foo(int x,int y){ }         //自动地成为内联

}

将成员函数的定义体放在类声明之中虽然能带来书写上的方便,但不是一种良好的习惯,应该将上例中改为:

//头文件

class A{

public:

void Foo(int x,int y);

}

//定义文件

inline void A::Foo(int x,int y)

{

}


三、慎用内联函数

以下情况不宜使用内联:
(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
(2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。


在C程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来像函数。

预处理器用复制宏代码的方式代替函数调用,省去了参数压栈、生成汇编语言的CALL调用、  返回参数、执行return等过程,从而提高了速度。  
使用宏代码最大的缺点是容易出错,预处理器在复制宏代码时常常产生意想不到的边际效应。

所以,在C++中使用内联函数取代所有宏代码,除了“assert”断言。


四、总结一下:

1、inline函数不要超过10行代码,且不能包含循环、switch、if语句

2、在一个c文件中定义的inline函数是不能在其它c文件中直接使用,google推荐把inline函数定义在**-inl.h头文件中。

3、不要过度使用inline函数定义,尤其对大函数来说



最后

以上就是清新电灯胆为你收集整理的C语言inline函数使用的全部内容,希望文章能够帮你解决C语言inline函数使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部