.cpp 文件和 .h 文件有什么区别?

新手上路,请多包涵

Because I’ve made .cpp files and then transferred them into .h files, the only difference I can find is that you can’t #include .cpp 文件。我缺少什么区别吗?

原文由 user98188 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

C++ 构建系统(编译器)没有区别,所以它都是一种约定。

惯例是 .h 文件是声明,而 .cpp 文件是定义。

这就是为什么 .h 文件是 #include d – 我们包含声明。

原文由 Macker 发布,翻译遵循 CC BY-SA 4.0 许可协议

我知道声明和定义之间的区别。

然而:

  • CPP 文件包括它所包含的任何头文件中的定义(因为 CPP 和头文件一起成为一个单一的“翻译单元”)
  • 一个头文件可能包含在多个 CPP 文件中
  • 链接器通常不会喜欢在多个 CPP 文件中定义的任何内容

因此,头文件中的任何定义都应该是内联的或静态的。头文件还包含多个 CPP 文件使用的声明。

既不是静态也不是内联的定义被放置在 CPP 文件中。此外,仅在一个 CPP 文件中需要的任何声明通常放在该 CPP 文件本身中,而不是放在任何(可共享的)头文件中。

原文由 ChrisW 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题