搜索

在c++中为什么要防止头文件被重复包含?

发布网友 发布时间:2022-04-22 18:03

我来回答

5个回答

热心网友 时间:2023-10-04 08:04

当1个C语言程序由 多个 源程序文件 组成时,由于每个 源程序文件 都有 #include <...>
#include "...h", 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误。

为了避免这种情况发生,可以 采用 定义宏 的方法 把各个头文件 包起来。

编译器 在正式编译的开始,现处理 宏 -- 也就是“预编译命令".

用 宏(#号开始的行) 把 头文件内容 包起来:
#ifndef _HEADER_One_H_ // 意思是:宏开始行,如果还没有定义 _HEADER_One_H_ 则 进入,否则退出

#define _HEADER_One_H_ //定义 _HEADER_One_H_//

header1.h
头文件内容

#endif // 宏结束行

热心网友 时间:2023-10-04 08:04

1,防止类型和常量的多次定义;
2,防止内联函数或宏重复定义
3,防止反复编译同一头文件的内容
因为一个头文件可以被很多文件包含,如果不止一个其他头文件,已经包含了某个头文件,当同时使用这两个头文件里的内容时(即同一.c或.cpp先后包含这两个头文件,那么就会出现同一头文件,被包含两次以上的情况,如果不写头文件的保护代码,那么那个公用头文件里的类型定义,常量定义,宏定义,以及内联函数和模板类,模板函数就会出现重复定义的错误!

热心网友 时间:2023-10-04 08:05

因为在编译的过程中是会链接你所引用到的头文件(.h文件),你在多个C文件里同时包含同一个.h文件系统就会报错,所以在每个C文件里加一句条件编译的语句,这样有利于防止重复包含的错误!不懂的话可以追问!希望可以帮助到你!

热心网友 时间:2023-10-04 08:06

如果头文件被包含于多个.c文件中,若头文件中包含全局变量的定义或者声明,很容易造成重复定义,导致编译无法通过,编译器报错

热心网友 时间:2023-10-04 08:06

使用
#pragma once
或者使用
#ifndef _XXX_H_
#define _XXX_H_
//header
#endif
编写头文件,以防止头文件被多次包含
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top