gpt4 book ai didi

c++ - 包括 guard : Why doesn't the C++ compiler automatically include each header file once only?

转载 作者:太空狗 更新时间:2023-10-29 20:24:44 24 4
gpt4 key购买 nike

<分区>

使用头文件时,每个头文件只能包含一次。
例如,假设我有三个类(class)。 A 类B 类C 类

class A 在文件 A.h 中声明,class B 在文件 B.h 中声明,class C 在文件 C.h 中声明, 它们在各自的 .cpp 文件中定义。
A.cpp

#include "A.h"
class A
{
}

B.cpp文件中,下面是类的定义。

#include "A.h"
#include "B.h"
class B
{
A a;
}

C.cpp 文件也是如此。

#include "A.h"
#include "B.h"
#include "C.h"
class C
{
A a;
B b;
}

现在,如果头文件中没有写 include guards,那么 g++ 编译器将抛出错误。
我的问题是,为什么我们需要指定包含守卫?每个头文件只包含一次不是常识吗?为什么编译器不自己处理多个包含?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com