带有内联函数c ++的未定义引用

问题描述 投票:0回答:1

我有两个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++ inline linker-errors extern undefined-reference
1个回答
1
投票

内联函数的定义应出现在使用该函数的每个编译单元中。

从C ++ 17标准(10.1.6内联说明符)

6在每个翻译中都应定义一个内联函数或变量odr-use使用的单位,并且应具有完全相同的单位每种情况下的定义

© www.soinside.com 2019 - 2024. All rights reserved.