2012-01-11 9 views
6

Windows 7 x64 SUA/Interix用の64ビットGCCコンパイラでgrepをコンパイルしています。stddef.h:エラー:重複した「符号なし」

それはstddef.hで標線にチョーク:...それはすでにlongをすることを混乱させています

make all-recursive 
Making all in intl 
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/local/share/locale\" -DLIBDIR=\"/usr/local/lib\" -DIN_LIBINTL -DHAVE_CONFIG_H -I.. -I. -I../../intl -D_ALL_SOURCE -D_REENTRANT -I/usr/local/include -I/usr/local/include -D_ALL_SOURCE -D_REENTRANT ../../intl/intl-compat.c 

In file included from ../../intl/gettextP.h:23:0, 
       from ../../intl/intl-compat.c:25: 
/usr/include/stddef.h:50:23: error: duplicate 'unsigned' 
*** Error code 1 

Stop in /tmp/grep-2.5.4-src/build/intl. 
*** Error code 1 

Stop in /tmp/grep-2.5.4-src/build (line 329 of Makefile). 
*** Error code 1 

Stop in /tmp/grep-2.5.4-src/build (line 244 of Makefile). 

私は、原因が何であるかを理解していない:

#ifndef _SIZE_T_DEFINED 
#if defined (lp64) || defined(_WIN64) 
#ifdef lp64 
typedef unsigned long size_t;     // <------ error 
#else /* lp64 */ 
typedef unsigned __int64  size_t; 
#endif /* lp64 */ 
#else /* (defined(lp64) || defined(_WIN64)) */ 
typedef unsigned int size_t; 
#endif /* (defined(lp64) || defined(_WIN64)) */ 
#define _SIZE_T_DEFINED 
#define _SIZE_T 
#endif /* _SIZE_T_DEFINED */ 

makeための出力がありますGCCで64ビットのように使用されていますが、エラーはさらに混乱しています!アイデア?

+1

longのように見えるのは、インクルードチェーンの前のどこかで署名されていないものです。 –

+0

'size_t'はマクロとして、' #define size_t unsigned int'などと定義されていますが、 '_SIZE_T_DEFINED'は定義されていない可能性がありますか?問題のある行は 'typedef unsigned long unsigned int;'(または同様のもの)に相当し、そのエラーメッセージがトリガされます。 – ruakh

+0

あなたは絶対に正しいです:)ポインタのおかげで、それはかなり困惑していました。 – Mehrdad

答えて

10

あなたのコードのどこかで、Somoneのはおそらくなかった:これらの線に沿って

#define size_t unsigned long 

か何かを、彼らはそれをやったとき_SIZE_T_DEFINEDを定義しないまま。エラーメッセージに記載されているパスを使用して、#includestddef.hのコードを実行します。これにより、エラーラインは次のようになります。

typedef unsigned long unsigned long; 

コンパイラには、うまくいかないでしょう!

+1

:確かに、私は 'grep'(どのようにmeta ...)を探して、' ./config.h:#define size_t unsigned int'を見ました...ありがとう! – Mehrdad

+0

autoconfは 'size_t'をマクロとして定義するために非常に古くなったコンパイラ/実装を想定していなければなりません。 – dreamlax

+0

@Mehrdad、問題ありません。お力になれて、嬉しいです! –

関連する問題