当我在.cpp文件中复制#include时会发生什么?

What happens when I have duplicated #include in .cpp file

本文关键字:什么 #include 复制 cpp 文件      更新时间:2023-10-16

我在一家小公司工作,但我们有可能在。cpp文件中重复包含的服务。重复的。h文件会影响我们的编译时间吗?

重复的.h文件可能导致重定义错误。使用:

#pragma once

#include语句被有效地替换为所包含文件的全文,从而产生一个包含所有头文件和原始文件内容的大文件。通常,将所有这些粘贴在一起所花费的时间可以忽略不计。

但是,这意味着代码在文件中结束两次,除非您有

#pragma once

,或者使用

保护
#ifndef MY_HEADER_NAME_H
#define MY_HEADER_NAME_H
// Actual header contents go here.
#endif /* MY_HEADER_NAME_H*/

或者使用其他类似的结构,比如Objective C的#import指令,所有这些都可以确保头文件的内容不会被编译第二次,如果你包含它们两次。否则,根据您的代码,您将获得关于双重定义结构等的错误消息。

所以除非你的项目或你的头文件很大,或者你的编译器写得特别糟糕,或者你的硬盘特别慢,当涉及到编译时间时,包括同一个文件两次是可以忽略不计的。