wil*_*rde 2 c++ module header-files
我已经阅读了一些关于在C++中保持标题的需要/适用性/实用性的文章,但我似乎无法找到任何可靠的原因/什么时候应该或不应该完成.我知道boost使用.hpp文件向最终用户提供模板功能,而不需要关联的.cpp文件,而这种想法部分源于浏览该代码.看起来这是一种方便的方式来提供一个新的Wt或Qt小部件的单个文件模块(仍然坚持每个.h约定的一个类).
但是,有没有任何负面的技术实现,为某人提供一个带有头部声明和实现的单个.hpp文件,假设你没有问题,他们可以访问实现(比如在OSS的上下文中).实例是否会从编译器/链接器的角度产生任何负面影响?
对此有任何意见或看法将不胜感激.
我知道boost使用.hpp文件向最终用户提供模板功能,而不需要关联的.cpp文件
错误的动词:它不是"没有必要 ",而是"没有能力 ".
如果Boost可以,他们会将他们的库分成标题和实现文件.事实上,他们尽可能这样做.
清除分离的原因很简单:只有标题项目的编译时间会大大增加,因为每次重新编译应用程序中最小的部分时都必须读取,解析和编译相关的头文件.
如果您碰巧重新编译该特定目标文件,则只需编译实现文件.
大型C和/或C++项目需要数小时才能编译.这些使用清晰的分离到头文件和目标文件.如果他们只使用头文件,我打赌编译时间将以天而不是小时来衡量.
但对于Boost的许多库来说,事实是模板定义可能不会位于单独的编译单元而不是它们的声明中,所以这根本不可能.