wec*_*ing 2 c c++ qmake makefile cmake
假设现在我有三个源文件:ClassA.hpp,ClassB.hpp和ClassC.hpp.
ClassB继承自ClassA,ClassC继承自ClassB.
所以,在ClassB.hpp中,我写了#include"ClassA.hpp".那么,在ClassC.hpp中,除了包括ClassB.hpp之外,还应该包括ClassA.hpp吗?
在编写Makefile时,我应该创建ClassC.o的ClassA.oa依赖吗?在cmake中 - 如果我不在ClassC.hpp中编写#include"ClassA.hpp",ClassA.o将不会是ClassC.o的依赖,对吧?这可以吗?
ClassC.hpp是否需要ClassA.hpp的内容,暂时忽略ClassB.hpp?
如果是这样,那么是的,你应该包括它,而不是依赖于可能改变的围绕意外包含.检查并设置正确的包含应该相对简单.依赖可能在以后更改的其他文件或行为是不好的做法,不应该使用.
编辑:在继承的情况下,问题适用于,事情有点不同.这种情况下你可以依赖B需要A,可以说你不直接依赖A(如果B改为继承Q,C就不再需要A).您希望查看标头或类所依赖的内容,并包含提供该文件的文件.如果它直接依赖于某些东西,请直接包含它.
使用标题保护可以使多次包含标题变得无害,并且在较大的代码库中非常常见.