C/C++ 语言中inline 关键词解释
程序员文章站
2024-03-21 11:40:04
...
inline函数与普通函数的区别
举例
以下例子均是在比较老的gcc中比较普遍的例子,只是方便理解,实际上gcc等编译器现在已经能够
识别部分短小函数自动将其变为内联函数。
普通函数
int g(int x)
{
return x+x;
}
int f()
{
return g();
}
这样f函数会调用g函数,g函数将x+x的值返回给f,然后f返回该返回值
但如果g是inline函数的话(内联函数)
内联函数(inline函数)
int inline g(int x)
{
return x+x;
}
int f()
{
return g();
}
那么实际编译结果是
int f()
{
return x+x;
}
这里实际就相当于把g()函数的代码直接融合到f函数中,这样就会减少调用g函数的时间,从而提升
效率虽然缺点会增加f函数编译后的长度,所以inline函数不能过长
现代的inline函数(内联函数)
前面有说到实际上编译器可以自动将短小的可以内联的函数自动内联,并不是只有前面带有inline标识
的函数才会将其视作内联函数在这里不禁要感叹一下编译器的超级强大的功能
但是inline本身还是有另外一个区别
一个可执行文件的源代码中,同一个函数只能被定义一次;所以,你如果把函数定义放在.h头文件中,
然后有两个.c源文件同时包含该头文件,就会出现函数重复定义的错误,但是,如果将该函数声明为
inline函数,则不会报错。
-------------------------------------------------------------------------------------------------------------------------------
转载地址:https://blog.csdn.net/qq_15437667/article/details/50472672