编译时错误:多重定义“主”
我收到以下错误:多重定义'主编译时错误:多重定义“主”
我创建了一个新的项目,有两个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;
}
当我按项目建设和运行,我得到的错误。我如何运行这些文件?
在同一个项目中不能有两个主要功能。将它们放在单独的项目中或重命名其中一个函数,并从另一个主函数中调用它。
无论参数列表如何,您的项目中都不能有多个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。
您不能有两个主要功能。事实上,你的项目中不能有任何两个具有相同签名的功能(而不是你的文件)。
而正如泰勒先生所说的主要是一种特殊情况,你甚至不能有两个称为main
的功能。
只要继续AtoMerZ的回答,'main'是一种特殊情况,无论参数列表(即签名)如何不同,都不能使用名为'main'的两个函数。 – 2012-01-17 10:39:46
@TAMER先生:谢谢。我编辑过。 – atoMerz 2012-01-17 10:46:05
由于编译器从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
main
调用它是你的程序的入口点,你不能有一个以上的入口点。
详细解释清楚看到这一点:Two 'main' functions in C/C++
我需要什么样的更改,我如何删除INT主要()从文件2? – sandbox 2012-01-17 10:36:18
您可以更改名称并在需要时随时调用它。或者在两个不同的项目中有文件。 – atoMerz 2012-01-17 10:37:45
给这两个函数不同的名称,并使main()接受参数(int argc,char * argv [])。然后使用传递的参数来确定要调用哪两个函数。 – CashCow 2012-01-17 10:48:28