说到“函数已有主体”的错误,简单来说就是你程序里同一个函数被定义了不止一次,编译器发现了这个重复,肯定要跳出来给你报错。这个问题常见于以下几种情况:
main 里定义了一个函数,C++不允许在函数里面再定义函数!举个最常见的例子,比如你在b.c文件中包含了a.c,同时main.c里也包含了a.c,结果编译器就会看到a.c里的函数体好几次,肯定炸锅了。

遇到这个问题别慌,我们有几个小妙招可以帮你避坑,轻松搞定:
main.c 里如果 b.c 已经包含了 a.c,那 main.c 就不要再 #include a.c 了。重复包含很容易导致函数主体被多个地方看到。c
#ifndef HEADER_FILE_H
#define HEADER_FILE_H
// 你的函数声明或内联函数定义
#endifint main(){ int fun(){...} } 这种写法滋事,千万别学,这会导致报错的哟。main() 只能有一个。如果你想实现多种不同入口功能,可以考虑用函数指针或者函数对象来切换,而不是写多个 main()。总之,控制好函数定义的范围和位置,确保同一函数只定义一次,脑袋清楚点,代码就能乖乖跑起来啦!

嘿,这种错误基本都是你写了好多地方定义同一个函数的代码,或者把包含文件引入多次。编译器一看到重复的函数定义就跳出来骂你,告诉你“别玩火啦,这不行!”所以记得用头文件保护符,别让一个函数跑两趟。
超简单!就是在头文件开头加上一套“#ifndef #define ... #endif”,告诉编译器:“乖乖的,这文件我只准编译一次!”这样即便别人疯了一样include了多次,也不会出错。很实用,快记下来!
这个main函数啊,它就是程序大boss,只能有一个。想让程序做多入口,不能傻傻地写多个main,编译都会炸。你可以用函数指针或设计不同函数模块,让main根据需求调度它们,灵活得很!
噢,这个事情非常容易搞砸!C++不支持函数里面再定义函数,像主函数里面写个小函数,编译器直接说“不!”—这是语法禁区。要写子函数就写在外面,保持代码干净利落,编译才能顺利通过,敲重点啦!
添加评论