c++头文件包含问题

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

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

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

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

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

如有帮助,请采纳,谢谢

请看👉 :c++头文件怎么写