modernize-deprecated-headers

C 库中的一些头文件在 C++ 中已弃用,不再适合 C++ 代码库。有些在 C++ 中没有效果。有关更多详细信息,请参阅 C++14 标准 [depr.c.headers] 部分。

此检查将 C 标准库头文件替换为其 C++ 替代方案,并删除冗余的头文件。

// C++ source file...
#include <assert.h>
#include <stdbool.h>

// becomes

#include <cassert>
// No 'stdbool.h' here.

重要说明:标准不保证 C++ 头文件在全局命名空间中声明所有相同的功能。当前形式的检查可能会破坏使用全局命名空间中的库符号的代码。

如果指定的标准早于 C++11,则检查只会替换在 C++11 之前弃用的头文件,否则将替换上述列表中的每个头文件。

这些头文件在 C++ 中没有效果

检查器忽略 extern “C” { … } 块中的 include 指令,因为库可能希望为 C 和 C++ 库公开一些 API。

// C++ source file...
extern "C" {
#include <assert.h>  // Left intact.
#include <stdbool.h> // Left intact.
}

选项

CheckHeaderFile

clang-tidy 无法知道当前分析的 C++ 源文件包含的头文件是否未被任何其他 C 源文件包含。因此,为了避免误报和错误的修复建议,我们忽略了向头文件发出报告。如果知道项目中的头文件仅被 C++ 源文件使用,则可以将此选项设置为 true。默认值为 false