不能在eclipse中使用单独的函数文件

时间:2014-12-24 14:50:09

标签: c++ eclipse

我试图在单独的文件中声明这些函数。在下面给出的代码中,我的main()main.cpp中定义,int addition(int x, int y)已定义 在另一个名为function.cpp

的文件中

我的代码:

的main.cpp

#include "function.cpp"
#include <stdio.h>
#include <iostream>

using namespace std;
int main()
{
int a = 1;
int b = 15;

int sum = addition(a,b);
cout<<"\nSum = "<<sum<<"\n";

return 0;
}

fucntion.cpp

int addition(int x, int y)
{
int sum = x + y;
return sum;

}

但是通过在Eclipse中使用上面的cod我得到以下错误。另一方面,如果我使用make手动编译代码 然后,通过linux终端,同样有效。

错误:

/ home / eclipse_workspace / multiFiles / Debug /../ funtion.cpp:9:`addition(int,int)'的多重定义 ./funtion.o:/home/eclipse_workspace/multiFiles/Debug/../funtion.cpp:9:首先在这里定义 collect2:ld返回1退出状态。

2 个答案:

答案 0 :(得分:1)

首先,不建议包含.cpp文件。您应该使用声明创建标题(.h),将实现放到.cpp,就像现在一样,只需要在include.h中使用它。您还应该通过添加#ifndef/#define/#endif来了解避免多个包含。

更新

#include适用于预编译阶段,或多或少意味着&#34;将此处粘贴在文件中...&#34;。因此它从一个文件复制函数并粘贴到主文件然后编译它。在此之后,它还使用您的函数编译cpp文件 - 也行。现在链接:由于前面的步骤和复制粘贴它有两个定义(实际上是两个符号)具有相同的名称 - 这导致错误,这就是为什么我们有标题:)

答案 1 :(得分:0)

首先创建一个头文件,例如Addition.h并在其中声明函数名。然后创建一个文件Addition.cpp并编写添加函数实现,然后在main.cpp文件中包含Addition.h。

使用头文件的概念是您可以在其他任何地方使用它,并且不限于您的main.cpp程序文件。

所以,简而言之

Addition.h

class Addition { public: 
int addition(int a , int b); //function declaration
private: int result_; };

然后在Addition.cpp

#include Addition.h
int Addition::addition(int x, int y) {
// function implementation
}

在main.cpp

#include <Addition.h>
int main() 
{ int a=3, b=4, sum=0; 
Addition objAdd; //creation of object for class Addition
sum = objAdd.addition(a,b);
}

希望这有助于构建代码。