C ++如何包含类头文件而不必编译它们的cpp文件?
我们可以包含<iostream>,我们不关心它的cpp文件,但为什么我们不能为我们自己的类做同样的事情?
因此,如果我的项目使用50个自定义类,则不仅必须包含50个自定义类,还必须编译/链接50个cpp文件(以及混乱项目树)。
问:是否有任何方法使用自定义标题,就像我们使用标准库一样?
换句话说,是否有一种犹太教的方式,以便我们不必在项目中添加所有这些cpp文件。 我只想包括ClassSnake.hpp,它反过来知道在哪里可以找到ClassSnake.cpp,它链接到ClassVector.hpp,它知道如何找到ClassVector.cpp ...全部在自动菊花链中,而不必显式地添加这些cpp文件在我的项目树中。
编辑:我并不担心重新编译cpp文件。 我的问题是必须记住哪个类内部链接到哪个其他类,以便我可以正确地将所有隐藏的cpp文件包含在项目树中...并使树变得混乱。
不是真的。
你所缺少的是你的编译器工具链已经编译了不在头文件中的<iostream>
需要的位。
你的编译器(链接器真的)只是隐式地链接这段代码而不必指定它。
如果您想清理一下您的项目树,您可以创建其他项目,这些项目是要使用的一个主项目的代码库。
标题不(通常)提供事物(函数,类)的实现,如果你要使用它们,它们必须在某个地方实现。
当你包含你自己的头文件时,你需要包含你自己的源文件来提供实现。 那里挺直的。
当你包含一个标准的头文件(比如iostream)时,这个实现就在你包含的库中(或者是隐式的,因为编译器只是做了它,或者是通过编译器/链接器选项明确的)。
作为Collin答案的延伸,您总是可以将“共享”代码卸载到共享库,然后在其他项目中引用头文件和lib文件。 lib文件只会在链接器阶段播放,因为所有其他麻烦的.cpp
文件已经被编译。
如果这只是一个没有其他共同性的自我封闭的项目,那么你将不得不扼杀你必须提供实现的事实:)
链接地址: http://www.djcxy.com/p/64197.html上一篇: C++ How to include class headers without having to compile their cpp files?