まつもと ゆきひろです

In message "Re: [ruby-ext:02334] warning: overflow in implicit constant conversion"
    on Thu, 19 Jan 2012 11:39:23 +0900, "Inaba,Touru" <inaba / lake.dti.ne.jp> writes:
|
|inabaです。
|
| rb_define_const(mTest, "TEST_LONGLONG", INT2NUM(TEST_LONGLONG));
|
|というところで
|
|warning: overflow in implicit constant conversion [-Woverflow]
|
|が出ます。TEST_LONGLONG は以下のように定義されています。
|
|#define INT64_LITERAL(val)     (val##LL)
|#define TEST_LONGLONG  INT64_LITERAL(0xFF00000000000000)

これは自作プログラムでということでしょうか。RubyのINT2NUMや
LONG2NUMが変換できるのはそれぞれint/longの範囲内なので、long
longを与えると警告の通りオーバーフローします。long longのある
環境では LL2NUM()マクロが使えると思います。