问各位一个关于头文件的问题
程序写完编译时
对include会把该文件中的内容复制进当前文件对吧
然后生成obj文件
最后连接器吧所有obj文件链接为exe文件
问题是我写了两个文件 每个文件都包含了iostream 这时能编译并运行
那么这两个文件生成的obj文件中应该都有一份iostream的代码吧,也就是说最终exe文件要有两份iostream的代码,这样为啥不会出现重定义错误
然后这两个文件再包含了我自己写的一个头文件(我的头文件有写pragma once的),就会出现重定义错误,这是为什么。。

c++头文件包含问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- flower980323 2022-07-06 13:43关注
iostream头文件包含的是声明,而不是定义,定义在iostream.cpp
估计是你在自己的头文件中定义了一个变量或者函数,然后不同cpp文件包含了这个头文件,连接就会出现重复定义
总之记住一点,头文件放声明,定义放cpp
pragma once和预处理宏定义只是为了防止单个cpp重复包含同一个头文件,跟这个问题没关系
如有帮助,请采纳,谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录