重新访问makefile和header依赖项

时间:2013-04-07 15:57:43

标签: c++ makefile

这个问题来自理想主义的观点。 //转发声明

我一直在学习makefile的基础知识,我发现自己想知道here关于标头依赖关系的问题。从实际的角度来看,我很高兴有解决方案可以解决标头依赖性问题。但是,在更多地思考这个问题时,我发现自己会问为什么标头依赖关系会 完全 影响编译单元。根据假设(参见前向声明),定义包含在头文件中,实现是以源为单位定义的,是否有任何理由需要修改头文件而不修改相应的源文件?如果没有,为什么重新编译从属源单元甚至是重要的,因为单独的定义修改不会对程序执行产生影响?这只是一个问题,即尽快识别界面定义变化中的错误吗?

1 个答案:

答案 0 :(得分:1)

(确切地说,声明包含在头文件中, definitions (即实现)在源文件中,但这只是术语。)

  

“有没有理由在没有修改相应源文件的情况下修改头文件?”

是。例如,将成员从public更改为private。此外,多个源文件可以#include给定的头文件,因此对标头的更改可能需要更改其中一个而不是另一个。例如,在类中添加/删除/重命名数据成员可能不需要对类实现进行任何更改,但仍需要更改使用该类的其他源代码。

即使源文件根本没有更改,如果头文件已更改,仍然需要重新编译它。例如,添加/删除数据成员会更改类的大小,这意味着使用该类实例的任何代码都必须调整为其分配的内存量。