猿问
下载APP

inline函数和一般的函数有什么不同?

inline函数和一般的函数有什么不同


慕勒3428872
浏览 99回答 3
3回答

慕的地8271018

inline函数和一般的函数的区别:1、定义次数inline函数是允许在多个cpp中多次定义的,而一个可执行文件的cpp文件中一个函数只能被定义一次。如果你把函数定义在一个.h文件中并让两个cpp包含就会造成这个函数分别在两个cpp中被定义产生错误。2、执行代码内联inline类似于宏,使用inline时,代码在执行前,编译器先将调用的inline函数替换城那个函数的执行代码。3、函数类型inline函数用于定义函数。在形式上类似于一个函数,但在使用它时,仅仅只是做预处理器符号表中的简单替换,因此它不能进行参数有效性的检测,也就不能享受C++编译器严格类型检查的好处。扩展资料:内联函数的内涵:比如 int g(int x) { return x + x; } int f() { return g(); } 这样f会调用g,然后g返回x + x给f,然后f继续把那个值返回给调用者。 如果g是inline的话。f会被直接编译成。 int f() { return x + x; } 相当于把g执行的操作直接融合到f里。这样减少了调用g消耗的时间,但同时也增大了f的尺寸。 这就是inline函数,也就是所谓的内联函数。 

MYYA

比如int g(int x){return x + x;}int f(){return g();}这样f会调用g,然后g返回x + x给f,然后f继续把那个值返回给调用者。如果g是inline的话。f会被直接编译成。int f(){return x + x;}相当于把g执行的操作直接融合到f里。这样减少了调用g消耗的时间,但同时也增大了f的尺寸。这就是inline函数,也就是所谓的内联函数。---------但是现在不是这样了。现在的编译器会自动决定是否对函数进行上面的操作,而不是根据你前面加不加inline。但是inline本身还是有另外一个意义:一个可执行文件的cpp文件中一个函数只能被定义一次。如果你把函数定义在一个.h文件中并让两个cpp包含就会造成这个函数分别在两个cpp中被定义产生错误。但是inline函数是允许在多个cpp中多次定义的,就解决了这个问题。

元芳怎么了

这是为了优化程序,让系统编译时节约时间。如果inline的函数太大就不可以了。关于节约时间的问题,在一般的小程序中看不出效果,要在大型的项目中才能感觉的出。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答