1

MinGW 4.8.1 を使用して clang(3.3) をコンパイルできません。70% のビルドが完了すると、常に次のエラーが表示されます。

ここに画像の説明を入力

4

1 に答える 1

0
  1. clang/lib/Basic/FileManager.cppincludessys/stat.hを定義します#define stat _stat64i32(実際には、間にいくつかの他の定義がありますが、アイデアはわかります;)
  2. clang/include/clang/Basic/FileManager.h含まないsys/stat.h; 代わりに、前方宣言のみがあります。
  3. したがって、ヘッダーの解析中に前方宣言が使用されます ( struct stat)
  4. しかし、最終的に実装に到達すると、プリプロセッサが作動しstruct statstruct stat64i32. したがって、ミスマッチ。

最善の解決策は、ヘッダーの前方宣言を変更して、代わりに を含めること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.hstdio.h

于 2013-09-06T23:21:52.550 に答える