fut*_*lib 2 c++ coding-style header project-structure
我正在研究一小部分C/C++源代码.程序从stdin读取输入值,使用算法处理它们并将结果写入stdout.
我只是在一个文件中实现所有这些,但我也想要算法的测试用例(而不是输入/输出读取),所以我的项目中有以下文件:
我马上在sort.hpp中实现了算法,没有sort.cpp.它相当短,没有任何依赖.
你是否会说,在某些情况下,标题中定义的函数是可以的,即使它们是复杂的算法而不仅仅是简单的访问器/变换器?或者我有理由避免这种情况吗?我应该何时将代码从头文件移动到源文件?
只要您了解权衡,在头文件中使用函数没有任何问题.将它们放在头文件中意味着它们必须在包含头的任何转换单元中编译(和重新编译).(并且必须声明它们inline,否则您将收到链接器错误.)
在具有许多翻译单元的项目中,如果你做了很多,那么编译时间可能会明显减慢.
另一方面,它确保函数定义在函数被调用的任何地方都可见 - 这意味着它可以简单地内联,因此生成的程序可以运行得更快.
最后,使用功能模板,您通常没有现实的选择.该定义必须在呼叫站点可见,实现这一目标的唯一实用方法是将其置于标题中.
最后一个考虑因素是仅标头库更易于部署和使用.你不需要链接任何东西,你不必担心ABI或其他任何东西.您只需将标题添加到项目中,包含它们即可.
相当多的流行图书馆使用仅限标题的策略.
| 归档时间: |
|
| 查看次数: |
510 次 |
| 最近记录: |