Clang 静态分析器找不到 stdio.h

标签 c clang clang-static-analyzer

我正在尝试在一个非常简单的程序上使用 Clang 静态分析器:

#include <stdio.h>
main ()
{
    printf("Hello, world !");
}

当我做

clang helloworld.c



它成功地编译了程序。

当我做

clang -cc1 -analyze -analyzer-checker=unix helloworld.c



它引发了一个错误:
helloworld.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^
1 error generated.

clang --analyze -Xanalyzer -analyzer-checker=unix helloworld.c



不打印任何东西。

有什么问题,我该如何解决?
我假设静态分析器看不到头文件,尽管编译器可以使用它们。
请帮我。

最佳答案

有时检查器无法读取默认的包含路径。所以你可能想把它作为参数传递。
您可以使用以下命令找到 clang 查看的确切包含路径:

clang -E -x c - -v < /dev/null

然后您的最终查询将变为:
clang -I<path to include> --analyze -Xanalyzer -analyzer-checker=unix helloworld.c

关于Clang 静态分析器找不到 stdio.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674464/

相关文章:

有人可以修改我的代码吗?我需要读取单个字符串并将其存储到数组中

c++ - alignas 用于内联静态成员时是否合法?

gcc - Fedora 21 有 clang,没有 gcc

c++ - 我需要链接哪些标准库才能将 Raylib 与 Windows 和 Clang 结合使用?

Clang Static Analyzer 没有发现最基本的问题

c++ - CRTP 复制方法警告潜在的内存泄漏

clang - clang-tidy 是否使 clang-check 变得多余?

C - strpy、char*** 崩溃

C头文件-划分主要代码

c - 从未释放的分离线程堆栈