编译时错误:定义了多个'main'

8

我遇到了以下错误:多重定义 `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;
}

当我按下“构建项目并运行”的按钮时,出现了错误。我该如何运行这些文件?

我需要做哪些修改?我需要从第二个文件中删除int main()吗? - sandbox
你可以更改名称并在需要时调用它。或者将文件放在两个不同的项目中。 - atoMerz
请给这两个函数取不同的名称,并使 main() 函数接受参数 (int argc, char* argv[])。然后使用传递的参数来确定调用哪个函数。 - CashCow
4个回答

11

在同一个项目中不能有两个主函数。将它们放在不同的项目中或重新命名其中一个函数并从另一个主函数中调用它。

无论参数列表如何,你的项目中只能有一个 main() 函数作为入口点。

但是,只要参数列表不同(函数重载),你可以拥有多个其他函数的声明。

文件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

你不能有两个主函数。事实上,你不能在整个项目中(而不仅仅是文件)拥有任何两个具有相同签名的函数。
而且正如TAMER先生所说的,main函数是一个特殊情况,你甚至不能有两个被称为main的函数。


1
继续AtoMerZ的回答,main是一个特殊情况,无论它们的参数列表(即签名)如何不同,你都不能有两个名称为main的函数。 - Tamer Shlash

1
  1. 决定您希望作为项目入口点的文件。

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

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

有关更清晰的解释,请参见此处:C/C++中的两个'main'函数


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() 函数)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接