[ruby-dev:47341] LONG_LONG availability

From: Tanaka Akira <akr@...>
Date: 2013-05-13 23:00:41 UTC
List: ruby-dev #47341
気がついてしまったのですが、Ruby 1.9.2 のころから
include/ruby/ruby.h に以下のコードがあります。

#ifdef SIZEOF_LONG_LONG
typedef char ruby_check_sizeof_long_long[SIZEOF_LONG_LONG ==
sizeof(LONG_LONG) ? 1 : -1];
#endif

手元の GNU/Linux 環境での
.ext/include/x86_64-linux/ruby/config.h には次の定義があります。

#define SIZEOF_LONG_LONG 8
#define SIZEOF___INT64 0

この環境には __int64 はないんですが、SIZEOF___INT64 は定義されています。

同様に long long はなくても SIZEOF_LONG_LONG は定義されるとすると、
#ifdef SIZEOF_LONG_LONG ... #endif は常に条件が成立して、
ruby_check_sizeof_long_long はいつも定義されるように思います。
そうすると LONG_LONG が定義されていない環境ではコンパイルエラーになるはずです。

にもかかわらずそれに関する苦情をみた覚えがありません。
ということはつまり ruby を動かそうとするような環境としては
64bit 整数型 (long long や __int64) がない環境はもはや存在しない、
ということなんでしょうか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next