问题描述
在头文件a.h
中定义了函数function()
;
编写源文件a.cpp
时引入了头文件#include"a.h"
;
但在源文件中调用函数funciton()
时出现如下错误:出现一个或多个重定向
解决方案
将原本a.h
中的函数定义:
int function()
{
statement;
}
修改为如下形式:
inline int function()
{
statement;
}
原因阐述
当我们在a.h
中定义了function
函数,又在a.cpp
中调用该函数时,实际上由于函数在a.h
和a.cpp
文件都是作为全局函数出现,而多个文件内不允许拥有同名的全局标识,所以会出现这样的错误。
所以我们在a.h
中定义function
函数时在函数定义体前面加上inline
,使该函数成为一个内联函数。内联函数的特点是当函数被调用时,实际上就是在调用处展开函数体代码,从而代替了函数调用,避免了同名全局标识的问题。