Clang stdio,找不到 h 文件

Clang stdio,h file not found

我用 Visual Studio 安装了 clang,然后按照文档中的说明构建了突出显示的项目。

构建成功,但是当我尝试这样做时:

clang -cc1 -analyze -analyzer-checker=core.DivideZero test.c

它说:

test.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.

我尝试了很多建议,但没有任何效果。

但是,如果我这样做,它会起作用

clang --analyze text.c

我不知道这是否使用了所有可用的检查器。我需要编写自己的检查器并对其进行测试...

有什么想法吗?

clang --version

的输出
clang version 7.0.0 (trunk 322536)
Target: i686-pc-windows-msvc
Thread model: posix
InstalledDir: C:\path\build\Debug\bin

是的,我有一个想法。删除 -cc1<stdio.h>。根据 the clang FAQ 这是你的错误。它说得很明确,给出了你的精确例子:

$ clang -cc1 hello.c
hello.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^
1 error generated.

继续阅读,它提供了其他替代解决方案以及有用的解释,您当然应该完整阅读,因为阅读我们使用的技术手册是我们作为程序员的工作。

clang -cc1 is the frontend, clang is the driver. The driver invokes the frontend with options appropriate for your system. To see these options, run:

$ clang -### -c hello.c

Some clang command line options are driver-only options, some are frontend-only options. Frontend-only options are intended to be used only by clang developers. Users should not run clang -cc1 directly, because -cc1 options are not guaranteed to be stable.

If you want to use a frontend-only option (“a -cc1 option”), for example -ast-dump, then you need to take the clang -cc1 line generated by the driver and add the option you need. Alternatively, you can run clang -Xclang <option> ... to force the driver pass <option> to clang -cc1.

重点是我的。这应该会给你足够的指导来完成你需要做的事情。