首页  >  文章  >  后端开发  >  为什么我应该在 C 中包含头文件 (.h) 而不是实现 (.cpp) 文件?

为什么我应该在 C 中包含头文件 (.h) 而不是实现 (.cpp) 文件?

Barbara Streisand
Barbara Streisand原创
2024-11-26 01:06:12471浏览

Why Should I Include Header (.h) Files Instead of Implementation (.cpp) Files in C  ?

包含.cpp文件:函数重复的案例

在C语言中开发时,一般建议包含头文件(.h)功能文件,而不是实现 (.cpp) 文件。包含 .cpp 文件可能会因函数重复而导致错误。

让我们考虑以下代码示例:

// main.cpp
#include <iostream>
#include "foop.h" // Header file containing the function declaration

int main() {
  std::cout << foo(42) << std::endl;
  return 0;
}

// foop.h
int foo(int a); // Function declaration

// foop.cpp
int foo(int a) { // Function definition
  return ++a;
}

此代码将正确编译并运行,因为头文件 (.h)仅包含 foo() 函数的声明,而定义在单独的 .cpp 文件中提供。

但是,如果我们替换main.cpp 中的头文件包含与 .cpp 文件包含:

// main.cpp
#include <iostream>
#include "foop.cpp" // Implementation file containing the function definition

这将导致编译器错误:

multiple definition of foo(int)
first defined here

这是因为预处理器复制了将文件包含到主源文件中。包含 .cpp 文件可以有效地将 foo() 函数定义复制到 main.cpp 中,从而导致函数的重复定义。

为了避免函数重复,建议包含头 (.h) 文件仅适用于声明和定义的 .cpp 文件。这有助于确保函数在程序中仅定义一次。

以上是为什么我应该在 C 中包含头文件 (.h) 而不是实现 (.cpp) 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

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