C++ 头文件和源文件 - 包含哪些内容以及按什么顺序

标签 c++ compilation include

我刚刚开始学习 C++,很难理解头文件和源文件的概念,特别是我应该在哪里包含哪些文件。

假设我有类 A 和 B,它们的每个内容都分为头文件和源文件,并且我有一个要在其中使用这些类的文件。

├ A.h
├ A.cpp
├ B.h
├ B.cpp
└ Main.cpp

我需要在何处包含哪个文件,是否可以使用单个命令编译/链接所有文件?

最佳答案

Which file do I need to include where

#include指令实际上是非常简单的预处理器指令,它只是将指定文件的内容添加到目标文件中。通常,您将函数声明保存在头文件中,并将所述函数的定义保存在相应的 cpp 中。文件,因此您至少希望将 header 包含在其中(在您的情况下 A.cpp 包括 A.hB.cpp 包括 B.h )。此外,您可以在使用 header 中声明的函数的任何文件中包含 header (例如,如果您在 A.h 中使用 B.hMain.cpp 的声明,则也包含这些文件)。

附注但是,您可以在头文件中声明旁边定义所有内容,但正如我之前所说,预处理器不会做任何花哨的事情 - 它只是将包含的内容添加到目标文件中,而您通常不希望让所有定义就位,因为包含它的每个翻译单元都会一遍又一遍地重复相同的定义。

关于C++ 头文件和源文件 - 包含哪些内容以及按什么顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72472234/

相关文章:

c - 必须包含哪些 header 才能将 wsprintf 与 MinGW 一起使用

c++ - Apache Ignite C++ 瘦客户端 : How do I put/get a byte array?

c++ - 如何修复主函数在传递参数时调用不正确的函数? (c++)

c# - 如何在托管代码 (C#) 中从 native 代码 (C++) 获取字符串数组

VBA:.copy 后编译错误

PHP,是否可以在文件顶部包含一个 php 文件来绕过 header() 函数的限制?

C++ std::system 'system' 不是 std 的成员

c++ - 这个程序有限制吗?

java - NoClassDefFoundError ForkedBooter

c++ - 自动生成的 .cpp 文件需要很长时间才能编译