包含 .h 和 .cpp 文件:了解差异
在 C 开发中,将其他文件合并到源代码中至关重要。但是,包含头文件 (.h) 和实现文件 (.cpp) 需要一些了解。
考虑以下代码:
main.cpp #include <iostream> #include "foop.h" // Including the header file int main() { int x = 42; std::cout << x << std::endl; std::cout << foo(x) << std::endl; return 0; }
foop.h #ifndef FOOP_H #define FOOP_H int foo(int a); // Declaring the function prototype #endif
foop.cpp #include "foop.h" // Including the header file, just for safety int foo(int a) { return ++a; }
此代码成功编译,因为我们在 main.cpp 和 main.cpp 中都包含了头文件(“foop.h”) foop.cpp。
为什么不包含 .cpp 文件?
现在,让我们看看如果我们替换“#include "foop.h"”行会发生什么main.cpp 与 "#include "foop.cpp":
main.cpp #include <iostream> #include "foop.cpp" // Including the implementation file
这将导致编译器错误。为什么?因为包含实现文件会将其包含的代码复制到当前源文件中,函数“foo”将被定义两次:一次在 main.cpp 中,一次在 foop.cpp 中,这种重复会使编译器感到困惑。 ,导致“多重定义”错误。
结论
因此,包含头文件至关重要(.h) 在主源文件和使用声明函数的任何附加源文件中应仅包含在一个源文件中,以避免重复代码定义。
以上是为什么我不能像在 C 中包含 .h 文件一样包含 .cpp 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!