3

在 Visual Studio (C++) 中,有没有办法轻松找到在 .cpp 文件中定义的重复标头?

我也在尝试寻找检测这种情况的方法:

  • A 包括 B 包括 C
  • A 包括 C
  • => A 不需要包含 C
4

3 回答 3

5

如果您想检测这种情况,您可以将此宏添加到每个文件的顶部。用 A 代替文件名

#if A_H
#error "Duplicate include"
#else
#define A_H
#endif
于 2009-01-04T15:37:49.720 回答
4

通常,您使用#pragma 标记它们一次,或等效的宏守卫并停止关心它。

如果您使用的是 MS 编译器,您可以在每个头文件的最顶部放置一个 #pragma 消息(IIRC,它可能是一个 #pragma 警告或 #pragma 错误),其中包含头文件的名称和您的构建输出将显示每个已编译文件包含的每个文件的列表。

这对您的头文件最有效,因为不会包含系统文件。

如果您想查看所有包含的标头,请编辑编译选项以包含/P (预处理到文件),这不会编译您的代码,而是将预处理器重定向到文件,然后您可以通过 grep 来查看#include 语句。请注意,这些文件会很大。

于 2009-01-04T15:39:56.083 回答
0

PC-Lint(可能还有其他 lint 工具)可以指示未使用的包含文件。

于 2009-01-04T18:24:27.060 回答