问各位一个关于头文件的问题
程序写完编译时
对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重复包含同一个头文件,跟这个问题没关系
如有帮助,请采纳,谢谢
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?