From: Nobuyoshi Nakada Date: 2007-08-24T00:34:03+09:00 Subject: [ruby-dev:31626] Re: strtod の精度 なかだです。 At Thu, 23 Aug 2007 22:45:19 +0900, Nobuyoshi Nakada wrote in [ruby-dev:31624]: > > gcc のソースを確認したところ、Mac OS X でしか __BIG_ENDIAN__ を > > define してくれないようなので、CPU ごとのエンディアン判定を > > わかる範囲で追加しました。 > > autoconfでWORDS_BIGENDIANというマクロが定義されるはずです。 > > > また、Win32 環境の判定がコンパイラ限定でうまくないので、型判定に > > 統合しました。 > > __int32や__int64というマクロがどこで定義されるのか知りませんが、 > config.hに SIZEOF_INT, SIZEOF_LONG, SIZEOF_LONG_LONG, > HAVE_LONG_LONG, LONG_LONG などのマクロが定義されているはずです。 こんなところで、linux,cygwin,mingw32,mswin32,bcc32ではコンパイル できました。まだgcc -Wallでコンパイルすると大量の警告が出ますが。 Index: util.c =================================================================== --- util.c (リビジョン 13242) +++ util.c (作業コピー) @@ -815,5 +815,5 @@ ruby_getcwd(void) */ -#ifdef __BIG_ENDIAN__ +#ifdef WORDS_BIGENDIAN #define IEEE_BIG_ENDIAN #else @@ -843,8 +843,6 @@ ruby_getcwd(void) #endif -#if defined(_MSC_VER) || defined(__BORLANDC__) -#define Long __int32 -#define ULong unsigned __int32 -#define IEEE_LITTLE_ENDIAN +#if HAVE_LONG_LONG +#define Llong LONG_LONG #endif -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦