2012-01-17 77 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++