C++中的头文件与 C 不同
Header file in C++ different from C
,在 tree.c 中我总是包含 tree.h。现在C++这是一样的吗?由于我找到了一些教程,其中在 tree 中.cpp它们包括 tree.h 和 main.cpp它们还包括 tree.h(而不是 tree.cpp如 C 中的)。
抱歉,如果令人困惑
C 和 C++ 之间的文件包含机制没有区别。
当您包含".c"(或.cpp)文件时,您使用的是所谓的单一编译单元方法。
尽管有这种方法的倡导者(并且在编译时间方面具有某种优势),但这不是通常的做法,这就是为什么您所指的教程包含 .h 文件的原因。
我并不是想争论什么是最佳实践,但使用单个编译单元并不容易,因为范围可能变得非常难以管理。我建议您仅在严格需要时才使用它(如果有的话),并依靠包含.h文件作为您的主要选择。
即使在 C 中,我也会在 main.h 中包含 tree.h 而不是 tree.c。因此,C++没有什么不同。
这个想法是,标题是描述公共接口的外观。而 c 文件包含应向用户隐藏的实际实现。c文件可以编译为目标文件或库,同时标头保持可访问性。
您不会在其他源代码中包含源代码(.c/.cpp),而仅包含标头(.h/.hpp)。将所有 (.c/cpp) 源文件编译为目标文件,并将其链接到可执行文件。您在C++教程中找到的内容对于 C 也是正确且有效的。
C++和C在这方面是相同的。你不应该#include
其他C++或 C 文件,只头文件 - 很抱歉,但你在 C 中所做的不是一个好的做法 - 它打破了对文件范围的假设(例如,这会影响文件范围static
的含义),这也意味着你不会从更快的编译周期中受益,而更快的编译周期只能通过编译更改的文件来获得。
- 使用 find 解析文件会给出不同文件的奇怪结果
- Qt C++:不同文件中同一命名空间的多个Q_NAMESPACE
- 如何在 c++ 的不同文件中声明类?
- (ODR 使用问题)在不同文件中priority_queue名称相同的结构
- 将枚举传递到不同文件中的对象中
- 不同C++文件中未命名命名空间中的名称可以引用同一个命名事物吗?
- 使用 Doxygen 在不同文件中注释函数
- 使用g++包含来自不同文件夹的头文件
- 不同文件的类,如何使其工作?
- 使用 CLion 在不同文件中分离 Boost 测试套件的正确方法
- 如何重载流运算符以使用位于不同文件中的函数
- 在 CMAKE 中包含来自 Android 项目不同文件夹的静态库
- 如何使预处理器 #if 以另一个不同文件中的值为条件
- 对于Android Studio NDK Gradle,如何为不同文件设置不同的CFLAG
- 在C++中,是否可以使用来自不同文件的值安全地初始化unordered_map?
- CMake 测试来自不同文件夹的源
- 用G 和Make编译并链接来自不同文件夹的许多源文件
- CMake AUTOMOC使用不同文件夹中的文件
- 不同文件的类声明
- 同时读取和写入C++中两个不同文件的文件流