一个头用于多个pcp文件
One header for multiple cpp-files
假设我有3个pcp文件:
Main.cpp
First.cpp
Second.cpp
现在我想在Main中使用First和Second的函数。如果我对cpp文件和它们的函数只使用一个头文件,有什么可抱怨的吗?
可以有任何问题,当使用头文件在第一,因为我需要一个函数从第二在第一?
只要您遵循ODR - One定义规则并且每个声明都是一致的,您就会很好。
头文件通常用于提供函数和其他东西的声明,链接阶段(除非有一些更复杂的东西,如模板)将负责解决这些依赖关系。
我没有说任何关于设计的东西-没有提供足够的信息。
一个header,几个cps。cpp中的所有函数都可以在一个头文件中声明。(例:"general.h")所有cpp都应该包含"general.h"文件。然后定义已声明的函数体。
不,只要你为每个声明提供一个定义给编译器,就可以了。
然而,最佳实践是为每个头文件提供一个源文件:如果"First"需要两个源文件,则只需包含First.h和Second.h
就c++而言,使用一个头文件并将函数的实际实现拆分到两个文件之间不会有任何问题。然而,这偏离了惯例,如果您需要"First.cpp"中的"Second.cpp"中的函数,也许您应该查看每个文件中发生了什么,也许应该将功能分离到另一个文件中。
作为个人偏好,我说您应该坚持为每个头文件使用一个cpp文件。分割实现只会在以后需要重构或再次移动实现时造成麻烦。
如果您使用的架构是将服务器和客户端代码混合在一个定义中,那么使用不同的cpp文件将它们分开可能是一种方法。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 重载==不适用于二进制树
- Insert函数不适用于2 if语句C++
- 用于矢量处理的多个线程
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 为什么模数运算符不适用于该代码
- 并行用于C++17中数组索引范围内的循环
- 将fold表达式与std::一起用于两个元组
- 一个头用于多个pcp文件