C ++:"多重定义' mainCRTStartup' "错误等

时间:2017-02-06 09:47:11

标签: c++ codeblocks

所以我正在做一些初学者挑战,想要修改我的代码,这就是我先做的。

#include <iostream>
#include <stdlib.h>
#include <time.h>

int random;
int guess;
int num_guess = 1;

int main(){
    srand(time(NULL));
    random = rand() % 100 + 1;

    std::cout << "Try to guess my number between 1 and 100." << std::endl;
    std::cin >> guess;

    while(guess > random){
        std::cout << "Sorry too high but i'll give you another try." <<     std::endl;
        std::cin >> guess;
        num_guess += 1;
    }

    while(guess < random){
        std::cout << "Sorry too low but i'll give you another try." << std::endl;
        std::cin >> guess;
        num_guess += 1;
    }

    if(guess = random){
        std::cout << "WOW! Congratulations you actually got it, you did use " << num_guess << " tries tho." << std::endl;
    }


    return(0);
}

应该生成1到100之间的随机数,然后猜猜它是什么数字。但后来我将这个代码复制到同一个项目下的另一个文件中,因为我在学校这样做,所以我想要我的代码的所有不同版本用于纪录。但是当我开始编写新代码时,程序应该猜测一个数字,你给它1到100之间。

#include <iostream>
#include <stdlib.h>
#include <time.h>

int number;
int guess = 100;
int num_guess = 1;

int main(){
    std::cout << "Please enter any number between 1 and 100" << std::endl;
    std::cin >> number;
    if(number > 100 && number < 1){
        std::cout << "Enter a valid number" << std::endl;
        std::cin >> number;
    }

    srand(time(NULL));
    guess = rand() % guess + 1;


    return(0);
}

我删除了main.cpp中的旧代码并写了这个代码,但是当我尝试运行它时,我收到了以下错误消息:

  • `mainCRTStartup&#39;
  • 的多重定义
  • `WinMainCRTStartup&#39;
  • 的多重定义
  • `atexit&#39;
  • 的多重定义
  • `_onexit&#39;
  • 的多重定义
  • `__gcc_register_frame&#39;
  • 的多重定义
  • `__gcc_deregister_frame&#39;
  • 的多重定义
  • 对__Jv_RegisterClasses&#39; |
  • 的未定义引用

1 个答案:

答案 0 :(得分:0)

猜猜你没有从项目中排除旧文件。在这种情况下,链接器会遇到两个main函数,并且不知道要使用什么。可能的解决方法:

  1. 从项目中排除未使用的文件;
  2. 评论旧版本;
  3. 使用条件编译:

     #ifdef OLD_VER
     // main1
     ...
     #else
     // main2
     ...
     #endif
    
  4. 创建一个新项目;
  5. 使用版本控制系统。
  6. 不建议长期使用前3种方法。最后一个是一个好点(我认为最好的一点),但它可能需要基本的VCS学习。