编译时错误:'main'的多重定义

时间:2012-01-17 10:33:11

标签: c++

我收到以下错误:`main'的多重定义

我创建了一个新项目,里面有两个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;
}

当我按下Build项目并运行时,我收到错误。我该如何运行这些文件?

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:4)

你不能有两个主要功能。事实上,你的项目(而不是文件)中不能有任何两个具有相同签名的功能 正如Mr.TAMER所说main是一个特例,你甚至不能有两个叫main的函数。

答案 2 :(得分:1)

  1. 确定您希望将哪个文件作为项目的入口点。

  2. 在其他文件中,将方法名称更改为其他名称。您可以从您在步骤1中选择的文件中调用它。

  3. main是您程序的入口点,您不能有多个入口点。

    有关更清晰的说明,请参阅:Two 'main' functions in C/C++

答案 3 :(得分: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的功能(首先重命名file2的main())