c++中inline函数定义在源文件且在源文件中被调用是否有效

xiangxw 发布于 2014/06/06 16:05
阅读 304
收藏 0

如下, 函数在源文件中,函数f2()调用inline的f1(),是否会有内联的效果,还是必须将f1()的实现写在头文件?

// a.h
class A
{
    int f1();
    int f2();
};

// a.cpp
#include "a.h"

inline int A::f1()
{
    return 1;
}

int A::f2()
{
    return f1();
}




加载中
0
J
Just Feel

写法应该是对的!不过这种情况下

头文件中要增加

#include“a.cpp”

0
stxy0509
stxy0509
调用一个inline函数,调用的地方必须能看到函数体.
xiangxw
xiangxw
那这样是可以内联成功的是吧。。请问下如何验证已经内联成功,或者c++标准中有没有相关的描述
0
NDSM
NDSM
在类声明中直接定义,不需要加inline编译器会内联
在类外定义前加inline关键字(声明和普通函数一样)
0
猜猜我是吧
猜猜我是吧
这个是可以的,想要验证的话,你应该进行一下反汇编,你要知道内联函数的意义,就是将使用到那个函数的地方直接换成那部分代码,而不是将函数存入代码段。是在编译的时候就能看出是不是内联,所以看你程序的汇编代码能看出来。
xiangxw
xiangxw
好的。谢谢。
返回顶部
顶部