确定是否所有需要的头文件都包含在另一个头文件中

时间:2015-10-15 02:16:48

标签: c++ c header-files

假设我有一个头文件,应该包含另一个头文件但不包含(无论出于何种原因)。例如:

myHeader.h

#ifndef MYHEADER_H
#define MYHEADER_H

struct i
{
  uint32_t field; // Forgot to include <cstdint>
};

#endif

这个错误很容易隐藏在.c / .cpp文件中。例如:

someFile.cpp

#include "myOtherHeader.h" // <cstdint> gets included through this file
#include "myHeader.h"

struct i someStruct;

someFile.cpp会很好地编译并隐藏我在myHeader.h中错过包含cstdint的事实。这不是一个问题,但假设我想在其他.cpp文件中使用myHeader.h,这可能会导致问题。

有没有一种简单的方法来检测头文件的遗漏?有一些不愉快的方法,比如手动查看文件(但这很乏味且容易出错),或者创建一个虚拟的.cpp文件,并且只包含有问题的头文件(但是它不能扩展到大量的头文件)。是否有一些静态分析工具或方法可以为我检查这个?

1 个答案:

答案 0 :(得分:0)

你手动完成。

坐下来编写代码来检查你并将其粘贴到每个文件中,当你可以花费100个时间只是前往顶部并粘贴include语句时,有点愚蠢。