8

grepWindows 7 x64 SUA/Interix 用の 64 ビット GCC コンパイラでコンパイルしています。

のマークされた行でチョークしstddef.hます。

#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は次のとおりです。

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).

原因がわかりません... longGCC で 64 ビットであるかのように使用されていることはすでに混乱していますが、エラーはさらに混乱しています! アイデア?

4

1 に答える 1

12

あなたのコードのどこかで、誰かがおそらくそうしました:

#define size_t unsigned long

または、いつそれを行ったかを定義せずに、それらの線に沿った何か_SIZE_T_DEFINED#include次に、エラーメッセージに記載されているstddef.hパスを介してコードを取得します。エラー行は次のようになります。

typedef unsigned long unsigned long;

動作しないコンパイラに!

于 2012-01-11T21:50:47.563 に答える