[英]How do I fix this compiler error
在过去5个小时左右的时间内一直在为此工作。 我已经进行了研究,试图找出错误所在,但是我无法把握丢失的内容。 如果有人可以帮助我解决这个小问题,我将不胜感激
这是代码
#include <iostream>
using namespace std;
bool isPrime (int num);
int main()
{
int num=0;
cout << "Enter a number and I'll tell you whether it is prime: ";
cin >> num;
if (isPrime(num)==true)
cout << num << " is prime.";
else
cout << num << " is NOT prime.";
return 0;
}
bool isPrime(int input)
{
if(input<1)
return false;
else if (input == 1||input ==2 ||input==3)
{
return true;
}
else
{
for(int i=2; i<input; i++)
{
if(input%i==0)
return false;
}
return true;
}
}
它给了我这个编译器错误
./main.cpp: In function ‘int main()’:
./main.cpp:31:6: error: redefinition of ‘int main()’
int main()
^
./main.cpp:10:5: error: ‘int main()’ previously defined here
int main() {
^
我不确定这意味着什么,但是从我研究的地方来看,它意味着有两个主要领域,但我只有一个。
以下代码在Windows上使用TurboC ++可以很好地编译,并根据需要提供适当的结果:
#include <iostream.h>
enum bool {true, false};
bool isPrime (int num);
int main()
{
int num=0;
cout << "Enter a number and I'll tell you whether it is prime: ";
cin >> num;
if (isPrime(num)==true)
cout << num << " is prime.";
else
cout << num << " is NOT prime.";
return 0;
}
bool isPrime(int input)
{
if(input<1) {
cout<<"Negatives not allowed"<<endl;
return false;
}
else if(input == 1) {
return false;
}
else if (input ==2 ||input==3) {
return true;
}
else {
for(int i=2; i<input; i++) {
if(input%i==0)
return false;
}
return true;
}
}
确保您不包括任何其他也定义main()的文件
如果您在Visual Studio中工作,则应检查解决方案资源管理器中是否存在其他.cpp文件,尤其是如果您已将其从旧的解决方案移到了旧的解决方案中,那您可能会忘记摆脱旧的引用。 如果失败了,您可以将已经拥有的代码复制并粘贴到新项目中,因为您拥有的代码不应该产生正在得到的错误。
您是否在没有包含保护的情况下从其他多个人包括此文件? 或者您可能在您的项目中的另一个cpp文件中编写了另一个遗忘的主文件,在这种情况下,请确保您不通过排除或创建一个全新的项目并单独添加所需的每个文件来与该项目一起构建该文件。
我发现,对于大多数IDE甚至命令行编译,当您遇到真正奇怪的错误并且无法修复它们时,创建一个新项目就可以解决其中的许多问题。
您的确切代码可以在我的编译器上完美运行。 因此,您的代码没有问题。 编译器总是会发生这种问题。 我认为您使用的IDE中已经创建了一个项目并添加了另一个代码,该代码也具有main()
函数。 因此,您可以通过从头开始创建新项目并复制粘贴此代码来轻松解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.