我无法使用 MinGW 4.8.1 编译 clang(3.3)。当 70% 构建完成时,总是会弹出以下错误:
问问题
658 次
1 回答
0
clang/lib/Basic/FileManager.cpp
包括sys/stat.h
,它定义#define stat _stat64i32
(实际上在两者之间还有一些其他定义,但你明白了;)clang/include/clang/Basic/FileManager.h
不包括sys/stat.h
;相反,只有一个前向声明。- 因此,在解析标头时,使用前向声明 (
struct stat
) - 但是当它最终到达实现时,预处理器将启动并替换
struct stat
为struct stat64i32
. 因此不匹配。
最好的解决方案是将标头中的前向声明更改为 include sys/stat.h
。(我实际上并没有测试它是否会编译)
当前主干不再包含代码。
更新:关于off64_t
. _mingw_off_t.h
这在这些天被定义为:
#ifndef _OFF64_T_DEFINED
#define _OFF64_T_DEFINED
__MINGW_EXTENSION typedef long long _off64_t;
#if !defined(NO_OLDNAMES) || defined(_POSIX)
__MINGW_EXTENSION typedef long long off64_t;
#endif
#endif /*_OFF64_T_DEFINED */
所以你可能想_POSIX
在包含io.h
(或stdio.h
)之前定义
于 2013-09-06T23:21:52.550 回答