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

Determine if all needed header files are included in another header file

本文关键字:文件 包含 另一个 是否      更新时间:2023-10-16

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

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文件,只包含有问题的头文件(但这不能扩展到大量的头文件)。有没有静态分析工具或方法可以帮我检查一下?

您可以手动操作。

坐着写代码来检查并粘贴到每个文件中是有点愚蠢的,因为你可以花100倍的时间去顶部粘贴include语句。