稍微花了一点点时间,复现出第一个问题,也是最常见的:第一个程序能运行,但是第二个就不能。


===========================================
问题排查:我们来看底端编译器栏,信息列。
首先看红色的,表示关键性错误,这种错误直接导致程序无法通过编译。
这里是第三行:[Error] ld returned 1 exit status. 意思是链接器(ld.exe)链接时出错,并返回1。这里插入一个知识点,就是正常程序执行到最后,都是返回0,如果没有返回0,就代表程序运行时出现了错误,并因为这个错误而退出程序。
紧接着,我们来看看这行上面的黑色详细信息行怎么写的:File2.c::(.text+0x0): multiple definition of 'main. 翻译过来就是:在File2.c中,再次定义了main函数。
File1.c::(.text+0x0): first defined here. 翻译过来就是:第一次定义在File1.c。
=============================================
错误原因:这就是最常见的把
多个无关的程序放到一个工程里的错误。
=============================================
产生原因:众所周知,C语言程序从main函数开始执行,那么当一个程序中有两个main函数的时候,从谁开始呢?这个时候,就会报错。不管初学者弄不明白文件和工程的关系,很正常,但是接下来的话就要好好看了。
当一个程序功能比较复杂,模块比较多时,程序员就会把代码按功能分到多个文件中,这些文件共同组成一个工程。因此,一个工程只会生产一个程序,
一个程序中只有一个main函数。
通常我们写的程序功能非常简单,因此只要一个文件就够了,此时我们就干脆
不创建工程============================================
解决办法:很多吧友会告诉小白,把其他文件里的main函数注释掉就可以了,确实很简单,也省掉了解释的麻烦。但是要我说,这就是一种头痛医头、脚痛医脚、而且带有误导性的解决方案。
正确的做法是:不创建工程,或者为每个文件单独创建一个工程。
要判断自己有没有不小心创建工程,也很简单,观察如图红框即可,每个工程(黄色图标)下,只应该有一个文件(白色图标)

有一些吧友的工程(黄色图标)下上面也没有,如下图,就需要单机工程图标前面的加号一下,使它变成如上图的样子

============================================
正确示范:下图两种其实都可以第一种,每个工程一个文件:
------------第二种,不创建工程: