2012-01-17 75 views
7

我收到以下錯誤:多重定義'主編譯時錯誤:多重定義「主」

我創建了一個新的項目,有兩個C++文件進去:

文件1

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World"; 
    //fflush(stdin); 
    //getchar(); 
    return 0; 
} 

文件2

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Demo Program"; 
    return 0; 
} 

當我按項目建設和運行,我得到的錯誤。我如何運行這些文件?

+0

我需要什麼樣的更改,我如何刪除INT主要()從文件2? – sandbox 2012-01-17 10:36:18

+0

您可以更改名稱並在需要時隨時調用它。或者在兩個不同的項目中有文件。 – atoMerz 2012-01-17 10:37:45

+0

給這兩個函數不同的名稱,並使main()接受參數(int argc,char * argv [])。然後使用傳遞的參數來確定要調用哪兩個函數。 – CashCow 2012-01-17 10:48:28

回答

11

在同一個項目中不能有兩個主要功能。將它們放在單獨的項目中或重命名其中一個函數,並從另一個主函數中調用它。

無論參數列表如何,您的項目中都不能有多個main()函數,因爲它是入口點。

但是,只要參數列表不同(function overloading),您可以有其他函數的多個聲明。

文件1個

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World"; 
    otherFunction(); 
    return 0; 
} 

文件2

#include <iostream> 

using namespace std; 

void otherFunction() 
{ 
    cout<<"Demo Program"; 
} 

不要忘記此時,相應的#includes。

4

您不能有兩個主要功能。事實上,你的項目中不能有任何兩個具有相同簽名的功能(而不是你的文件)。
而正如泰勒先生所說的主要是一種特殊情況,你甚至不能有兩個稱爲main的功能。

+1

只要繼續AtoMerZ的回答,'main'是一種特殊情況,無論參數列表(即簽名)如何不同,都不能使用名爲'main'的兩個函數。 – 2012-01-17 10:39:46

+0

@TAMER先生:謝謝。我編輯過。 – atoMerz 2012-01-17 10:46:05

0

由於編譯器從main()開始執行,因此不能在同一個項目中使用相同的函數簽名。如果你定義了多次main(),那麼它會產生一個錯誤。

file1.c中

#include <iostream> 

#include <file2.h> 
using namespace std; 

int main() 
{ 
cout<<"Hello World"; 
//fflush(stdin); 
//getchar(); 
return 0; 
} 

而且在file2.h,您可以定義file2.c中的功能(文件2的第一重命名的main())

1
  1. 決定哪些文件你想成爲你的項目的入口點。

  2. 在其他文件中,將方法名稱更改爲其他名稱。你可以從你選擇的文件在步驟1

main調用它是你的程序的入口點,你不能有一個以上的入口點。

詳細解釋清楚看到這一點:Two 'main' functions in C/C++