c++中出现multiple definition of *** first defined here的错误

CaptainFeng123 2018-03-25 08:03:48
本人小白,我用codeblocks写了两个文件如下图,但会出现multiple definition of *** first defined here的错误为什么啊


...全文
2539 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
EL-PAAS微服务 2018-03-26
  • 打赏
  • 举报
回复
你include了cpp文件,相当于在main.cpp里面又拷贝了一遍,原文件已经有了,所以重定义错误
U201212499 2018-03-26
  • 打赏
  • 举报
回复
建议找本书看一下(C++ primer。。。). 根据你写的,可以有以下几种方式: (1)一个文件(main.cpp) #include <iostream> using namespace std; void put(); int main() { put(); return 0; } void put() { cout << "Hello!"; } (2)两个文件(jiancha.h 、main.cpp) jiancha.h文件内容 #include <iostream> using namespace std; void put() { cout << "Hello!"; } main.cpp文件内容 #include "jiancha.h" int main() { put(); return 0; }
月凉西厢 2018-03-26
  • 打赏
  • 举报
回复
头文件应该只包含声明,因为声明多少次都不会有问题,而定义只能有一次。不严谨的解释下你的错误:你在jiancha.cpp里面定义了函数,put函数在这里会被编译一次,main.cpp里面展开jiancha.cpp时put函数又会被编译一次。另外,你这风格哪儿学的啊?
千夜zzy 2018-03-26
  • 打赏
  • 举报
回复
引用 5 楼 JuneCt 的回复:
#include后面跟的是头文件而不是.cpp的源文件,你这样写就相当于定义了两次put()函数,改的话先添加一个头文件,里面放put函数的定义,然后在主程序里包含那个头文件就好了
写错了,头文件里放声明,定义放在.cpp里
千夜zzy 2018-03-26
  • 打赏
  • 举报
回复
#include后面跟的是头文件而不是.cpp的源文件,你这样写就相当于定义了两次put()函数,改的话先添加一个头文件,里面放put函数的定义,然后在主程序里包含那个头文件就好了
wlzx1993 2018-03-25
  • 打赏
  • 举报
回复
感觉你把.h文件和.cpp文件搞混了,你找一本学C++的书,看着人家的模仿编一下自己的

64,661

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧