如何修复此编译器错误

时间:2015-12-10 03:05:49

标签: c++

过去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() {
 ^

我不确定这意味着什么,但是从我研究的地方来看,这意味着有两个主电源,但我只有一个。

4 个答案:

答案 0 :(得分:2)

以下代码在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;
     }
    }

答案 1 :(得分:1)

确保您没有包含任何其他也定义main()

的文件

如果你在visual studio中工作,你应该检查解决方案资源管理器中的其他.cpp文件,特别是如果你从旧的解决方案中移除它,你可能忘记去除旧的引用。如果失败了,您可以将您拥有的代码复制并粘贴到新项目中,因为您所拥有的代码不应该产生您所获得的错误。

答案 2 :(得分:1)

您是否在没有包含警卫的情况下将此文件包含在其他多个人中?或者您可能在项目中的另一个cpp文件中写入了另一个您忘记的主文件,在这种情况下,请确保您不要通过排除或创建一个全新的项目并单独添加您需要的每个文件来构建项目。

我发现,对于大多数IDE,甚至是命令行编译,当你得到非常奇怪的错误并且无法修复它们时,创建一个新项目可以解决其中许多错误。

答案 3 :(得分:1)

您的确切代码在我的编译器上运行完美。所以你的代码没有问题。这种问题总是发生在编译器上。我认为您正在使用IDE创建项目并添加了另一个代码,该代码也具有main()功能。因此,您可以通过从头开始创建新项目并复制粘贴此代码来轻松解决此问题。