首页 >后端开发 >C++ >为什么我不能像在 C 中包含 .h 文件一样包含 .cpp 文件?

为什么我不能像在 C 中包含 .h 文件一样包含 .cpp 文件?

Linda Hamilton
Linda Hamilton原创
2024-11-29 19:39:11584浏览

Why Can't I Include .cpp Files Like I Include .h Files in C  ?

包含 .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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn