【问题标题】:Is "Multiple Include Guard" required for .cpp files?.cpp 文件是否需要“多重包含保护”?
【发布时间】:2015-09-21 08:24:47
【问题描述】:

我的项目中有 file1.h 和 file1.cpp。我在 file1.h 中有多个 include Guard,以避免多次包含同一文件。我在 file1.cpp 文件中包含了 file1.h 文件。我运行第三方工具(parasoft)来查找与项目有关的任何问题,它已确定 file1.cpp 文件中缺少 Multiple Include Guard。我的问题是是否需要在 file1.cpp 文件中包含多个包含防护?如果不需要,为什么我在 file*.cpp 文件中出现错误?请帮帮我....

【问题讨论】:

  • 多个包含一个文件的保护?
  • 嗯,它的名字是 Header guard,这是有原因的。我认为parasoft只是愚蠢的。 :((不幸的是,我知道我工作的 parasoft 原因......)
  • 有编译错误信息吗?
  • @Jarod42:“多重包含守卫”。守卫防止多重包含。但是,是的,正常名称只是 include include guard

标签: c++ c-preprocessor


【解决方案1】:

此消息的通常原因是#include "file1.cpp"。也就是说,您不小心包含了 .cpp 文件而不是实际的标头。

您正确使用的工具认为如果包含file1.cpp,则应防止多次包含。该工具并不怀疑是否应该首先包含file1.cpp

【讨论】:

    【解决方案2】:

    您正在使用的工具已损坏,或者您没有正确使用它。 您不需要在 cpp 文件中包含任何保护,因为通常您不会在任何地方包含 cpp 文件。

    【讨论】:

    • 可能他包含了源文件并因此收到警告
    • 这可能是可能的解释。但他准确地描述了他拥有哪些文件以及如何包含这些文件。如果 file1.cpp 包含在其他地方,我希望他会这样写。