【发布时间】:2018-09-28 10:22:42
【问题描述】:
我用clang编译c文件时,出现错误。 c文件很简单。 main.c
#include <STDIO.H>
int main() {
printf("Hello\n");
return 0;
}
我在 windows 中使用了以下命令。
clang main.c
错误
C:\Users\bo\Desktop>clang main.c
In file included from main.c:1:
F:\Microsoft Visual Studio\VC98\Include\STDIO.H:70:22: error: typedef
redefinition with different types ('unsigned int' vs 'unsigned long long')
typedef unsigned int size_t;
^
1 error generated.
【问题讨论】:
-
我不知道标准头
STDIO.H- 可能你想要stdio.h? Bzw:clang报告的错误信息会很棒... -
您正在使用 clang 编译器,它显然包含来自 VStudio 的文件。这似乎不对。也许在调用 clang 之前重置 %INCLUDE% 环境变量?或显式将路径传递给其包含文件。此外,您可能希望使用小写字母 (stdio.h),这在 Win 上不是问题,但仍然如此。此外,size_t 定义不匹配似乎与 32/64 位有关。
-
VC98 是 Visual Studio 版本 6,于 1998 年发布。当然,它的 .h 文件非常不适合与 clang 一起使用。 VS2017直接支持Clang,社区版免费下载。
-
F:\Microsoft Visual Studio\VC98\Include\STDIO.H听起来像是一个非常陈旧过时的 stdio.h 文件。 -
您系统上的 windows SDK 似乎对于 LLVM 版本来说太旧了。可能您正在使用 32 位 SDK 编译 64 位。尝试使用命令行
clang -m32 main.c。无论如何更新你的系统下载最后一个win SDK。