19

我在开发中使用 clang-tidy 作为“linter”工具。我开始将 3rd 方软件集成到我的代码中,当我使用以下方法包含他们的头文件时:

-I/path/to/include 

产生了大量的错误,我什至还没有#include标题。

error: too many errors emitted, stopping now [clang-diagnostic-error]
...
/path/to/include/wchar.h:81:1: error: unknown type name 'wint_t' [clang-diagnostic-error]
wint_t fgetwc(FILE *__stream);
^
/path/to/include/wchar.h:81:15: error: unknown type name 'FILE' [clang-diagnostic-error]
wint_t fgetwc(FILE *__stream);
              ^
...

我使用以下方法编译我的程序:

/usr/bin/clang-tidy-4.0 /path/to/main.cpp -checks=-*,cppcoreguidelines* -- -lang-c++ -I/path/to/include -std=gnu++11 -Wall -Werror -O0 -g -D<define variables>

似乎这些“clang-diagnostic-errors”并没有停止编译,因为它继续编译并运行良好。是否有标志可以关闭/抑制此错误?我不想看到它,因为我没有编写这些头文件。

如果我摆脱了这个论点,-I/path/to/include一切都编译得很好,没有错误。

4

1 回答 1

3

没有办法忽略 clang-diagnostic-error,因为它基本上是编译器错误。

为了clang-tidy工作,分析的代码需要由clang后端编译以生成 AST(抽象语法树)。

问题是您包含了无法由 clang 编译的标头(我猜想用于 MSVC 的 Windows 标头)。

于 2021-05-11T13:23:43.867 回答