如何防止头文件重复引入的三种方法?

2026-04-19 05:291阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1742个文字,预计阅读时间需要7分钟。

如何防止头文件重复引入的三种方法?

在之前,我们详细介绍了C++语言中如何使用宏定义。

在之前我们详细介绍了 C 语言中如何使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复 #include,此方式在 C++ 多文件编程中也很常用。

举个例子,如下是一个 C++ 项目,其内部含有 school.h 和 student.h 这 2 个头文件以及 main.cpp 源文件,其各自包含的代码为:

//student.h class Student { //...... }; //school.h #include "student.h" class School { //...... private: Student stu[50]; }; //main.cpp #include "student.h" #include "school.h" int main() { //...... return 0; }

运行此项目会发现,编译器报“Student 类型重定义”错误。这是因为在 school.h 文件中已经 #include 了一次 "student.h",而在 main.cpp 主程序又同时 #include 了 "school.h" 和 "student.h",即 Student 类的定义被引入了 2 次,C++不允许同一个类被重复定义。

有小伙伴可能想到,既然 School.h 文件中已经引入了 Student 类,那去掉 main.cpp 主程序引入的 student.h 文件不就可以了吗?这样确实可以避免重复引入 Student 类,但此方式并不适用于所有“重复引入”的场景。

阅读全文

本文共计1742个文字,预计阅读时间需要7分钟。

如何防止头文件重复引入的三种方法?

在之前,我们详细介绍了C++语言中如何使用宏定义。

在之前我们详细介绍了 C 语言中如何使用宏定义(#ifndef / #define / #endif)来有效避免头文件被重复 #include,此方式在 C++ 多文件编程中也很常用。

举个例子,如下是一个 C++ 项目,其内部含有 school.h 和 student.h 这 2 个头文件以及 main.cpp 源文件,其各自包含的代码为:

//student.h class Student { //...... }; //school.h #include "student.h" class School { //...... private: Student stu[50]; }; //main.cpp #include "student.h" #include "school.h" int main() { //...... return 0; }

运行此项目会发现,编译器报“Student 类型重定义”错误。这是因为在 school.h 文件中已经 #include 了一次 "student.h",而在 main.cpp 主程序又同时 #include 了 "school.h" 和 "student.h",即 Student 类的定义被引入了 2 次,C++不允许同一个类被重复定义。

有小伙伴可能想到,既然 School.h 文件中已经引入了 Student 类,那去掉 main.cpp 主程序引入的 student.h 文件不就可以了吗?这样确实可以避免重复引入 Student 类,但此方式并不适用于所有“重复引入”的场景。

阅读全文