Maaaazy 2022-07-06 13:26 采纳率: 36.4%
浏览 56
已结题

c++头文件包含问题

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

  • 写回答

2条回答 默认 最新

  • flower980323 2022-07-06 13:43
    关注

    iostream头文件包含的是声明,而不是定义,定义在iostream.cpp

    估计是你在自己的头文件中定义了一个变量或者函数,然后不同cpp文件包含了这个头文件,连接就会出现重复定义

    总之记住一点,头文件放声明,定义放cpp

    pragma once和预处理宏定义只是为了防止单个cpp重复包含同一个头文件,跟这个问题没关系

    如有帮助,请采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月14日
  • 已采纳回答 7月6日
  • 创建了问题 7月6日

悬赏问题

  • ¥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里的文字?