2014-12-24 48 views
0

我想在單獨的文件中聲明函數。在下面給出的代碼,我main()main.cpp定義和int addition(int x, int y)在名爲function.cpp的另一個文件中定義 。不能在eclipse中使用單獨的函數文件

我的代碼:

的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中我得到以下錯誤。另一方面,如果我通過linux終端手動使用make 編譯代碼,那麼同樣的工作。

ERROR:

/home/eclipse_workspace/multiFiles/Debug/../funtion.cpp:9:加入`多個定義(INT,INT)」 ./funtion.o:/home /eclipse_workspace/multiFiles/Debug/../funtion.cpp:9:此處首先定義 collect2:ld返回1退出狀態。

回答

1

首先,不建議包含.cpp文件。您應該使用聲明創建頭文件(.h),將實現文件放入.cpp文件中,就像現在和需要使用它的地方一樣include.h。您還應該閱讀有關通過添加#ifndef/#define/#endif來避免多個包含。

更新:

#include作品在預編譯階段,或多或少的意思是「貼在這裏你必須在文件...」。所以它從一個文件複製功能並粘貼到主文件然後編譯它。在此之後,它也可以用你的函數編譯cpp文件 - 也可以。現在到了聯:因爲前面的步驟,複製,粘貼,它有兩個定義(實際上是兩個符號),它具有相同的名稱 - 這導致錯誤,這就是爲什麼我們有頭:)

+0

感謝您的回覆。我對這個結構很熟悉,但現在我正試圖遵循另一個結構。我編輯了我的問題,好心一看。 – Dodo

+0

@Dodo - 我更新了我的答案:)看一看 – Kuba

+0

非常感謝。據我所知,我只在主程序中包含一個頭文件。我試過這個:在函數文件中包含頭文件,在頭文件中聲明函數,並將頭文件包含在主程序中。有效。 :) – Dodo

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); 
} 

希望這有助於在構建你的代碼。

相關問題