你看清楚了:头(.h)只有数据类型定义和函数原型,是没有实现代码的,实现代码在.cpp中,而项目你看12楼的图,引入.h和.cpp,然后在主程序模块test.cpp(main()函数在这里)中#include "School.h"即可,不用#include "School.cpp"!
编译器,是搜寻所有引入的.c/.cpp进行编译的,你尽管把1.c嵌入到2.c中,但1.c仍然存在,那么编译器就编译加长版的2.c和1.c两个实现文件了,而这两个实现文件中,有一个是没有函数原型的,它有默认返回类型,即int,而你又定义了一个返回stu类型的函数,这样,编译器无法知道调用哪一个——对.c这样的C编译器来说,C语法不允许函数重载,报出来的错误就会是那样,如果你用.cpp以C++编译器运行,则会报出类似“不能仅以返回值区别的函数定义”这样的信息。