gpt4 book ai didi

c++ - 多次使用 header 不好吗?

转载 作者:行者123 更新时间:2023-12-02 16:00:55 24 4
gpt4 key购买 nike

假设我正在使用头部防护,

#ifndef MAIN_H
#define MAIN_H

#include "foo.h"
#include "some_header_file.h"

... // Some Code

#endif

在 foo.h 文件中也有 Header guards。

#ifndef FOO_H
#define FOO_H

#include "some_header_file.h"
... // Some Code

#endif

如您所见,主文件有 2 个标题,其中一个是重复的。我有三个问题:

  1. header 保护是否可以防止重复的 header 文件?
  2. 编译器是否优化并删除了它?
  3. 这是一种不好的做法吗,应该从主文件中删除多余的头文件吗?

最佳答案

Does Header guards prevent duplicate header files?

是的。第一个遇到的包含会将 header 的内容带到翻译单元,而 header 保护会导致连续的包含为空,从而防止 header 的内容被复制。这正是使用 header guards 的原因。

or is this a bad practice and the extra header file should be deleted from main file?

不,重复包含并不是一个坏习惯。如果“main” header 依赖于“some_header_file.h”中的任何声明,那么“main”绝对应该直接包含“some_header_file.h”,无论另一个 header - 即使是“main”包含的 header - 是否也包含它。

依赖传递包含通常是一种不好的做法——即在这种情况下,当将“foo.h”包含到“main”中时,依赖“foo.h”包含“some_header_file.h”的细节可能是不好的”。此类假设通常会导致程序在修改时意外中断。在这种情况下,如果“foo.h”被修改为不再依赖于“some_header_file.h”,并且该包含被删除,那么该更改将突然导致假设失败,并且“some_header_file.h”将不再是由于根本不涉及“主要”的更改而包含在“主要”中。那会很糟糕。

关于c++ - 多次使用 header 不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70732979/

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