我试图在单独的文件中声明这些函数。在下面给出的代码中,我的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退出状态。
答案 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);
}
希望这有助于构建代码。