问各位一个关于头文件的问题
程序写完编译时
对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重复包含同一个头文件,跟这个问题没关系
如有帮助,请采纳,谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 SAP HANA SQL Script 。SUM OVER 怎么加where
- ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
- ¥100 微信小程序跑脚本授权的问题
- ¥60 为什么使用python对地震数据进行umap降维后,数据成图会出现不连续的现象
- ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏
- ¥15 STM32串口接收问题
- ¥15 腾讯IOA系统怎么在文件夹里修改办公网络的连接
- ¥15 filenotfounderror:文件是存在的,权限也给了,但还一直报错
- ¥15 MATLAB和mosek的求解问题
- ¥20 修改中兴光猫sn的时候提示失败