まつもとさん、 Yukihiro Matsumoto wrote: > | 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()マクロが使えると思います。 はい、とあるCのライブラリのAPIをRubyから呼び出す拡張モジュールを書いてます。 おっしゃるとおりLL2NUM()の使用でwarningがなくなりました。ありがとうございました。 どうも数年ぶりに拡張モジュール書いてるんで知識が古すぎるようです。 README.EXT[.ja]にもLL2NUMは書いてませんでしたし。 inaba