c++inline(c++inline函数)
本篇文章给大家谈谈c++inline,以及c++inline函数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、C语言inline函数
- 2、vs2010,C语言,inline:为什么函数前面加了个inline,然后就提示找不到exe了,去掉inline又可以了,怎么回事?
- 3、C++ inline函数为什么不能继承?
C语言inline函数
普通的函数在调用的时候需要消耗栈空间没芦,cpu和内存利用率会增高,c99中引入了inline关键字,可以在编译的时候,在函数调用处直接把函数像宏一样展开,这样在增加代码空间的情况下降低了cpu和内存的使用。
1、如果Inline函数定义升清在cpp/c文件中,则枯笑带本文件里的函数调用会转换为内联代码,但是其他文件的函数调用还是和普通函数一样(gcc标准和c99标准有差别,有可能链接时会找不到函数符号)。
2、如果inline函数定义在.h文件中,则其他文件的函数调用也会转换为内联代码。
3、由于内联函数调用时候不会压栈,所以函数不能是递归函数。
vs2010,C语言,inline:为什么函数前面加了个inline,然后就提示找不到exe了,去掉inline又可以了,怎么回事?
比如
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中多次定义的,就解决了这个问题。
C++ inline函数为什么不能继承?
inline成员汪肢函数可以继承。
inline和类继承并没有关系。另外在类中直接定义函数体的成员函数默认就是inline的:
struct A
{
int foo() // 这里等价于写inline int foo(),并且这个foo显然是可以继承的
{
return 0;
}
};
因为inline函数另一个特性就是运陵瞎可以在不同编译单元里重复定义,而把成员函数体定义写在类定义里旁空面会导致所有用这个类的编译单元都必须有函数体的定义,所以必须作为inline函数存在。
[img]关于c++inline和c++inline函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。