我有两个cpp文件:
F1.cpp
using namespace std;
int i;
void Modify();
int main()
{
i=1;
cout << "i main 1 = " << i << endl;
Modify();
cout << "i main 2 = " << i << endl;
return 0;
}
F2.cpp
using namespace std;
extern int i;
inline void Modify()
{
i=99;
cout << "i modify = " << i << endl;
}
启动可执行文件时,出现此错误:F1.o:在函数main中:F1.cpp :(。text + 0x4a):对“ Modify()”的未定义引用collect2:错误:ld返回1退出状态
我不明白为什么会这样,因为内联函数的重点是调用函数时将代码复制粘贴。因此,当我在main方法中调用Modify()时,我认为它将在其中粘贴Modify()函数的代码,因此我不明白为什么会有未定义的引用...
请帮助!
内联函数的定义应出现在使用该函数的每个编译单元中。
从C ++ 17标准(10.1.6内联说明符)
6在每个翻译中都应定义一个内联函数或变量odr-use使用的单位,并且应具有完全相同的单位每种情况下的定义