Hi, At Tue, 21 Nov 2006 00:16:06 +0900, Hugh Sasse wrote in [ruby-core:09594]: > Ouch. The only solution to that that I can think of would be > to make the constant float, and add decimal places. I've forgotten > what happens about coercion in C ... After poking around the net a > bit I think that would work, but it would still be horrid. It would > mean adding TEENY_TEENY or some such balderdash to the names. It doesn't work in preprocessor. Expression in C is not matter. $ echo -e '#if RUBY_VERSION_CODE > 185\nOK\n#else\nNG\n#endif' | LANG=C gcc -E -DRUBY_VERSION_CODE=186 - # 1 "<stdin>" # 1 "<built-in>" # 1 "<command line>" # 1 "<stdin>" OK $ echo -e '#if RUBY_VERSION_CODE > 185\nOK\n#else\nNG\n#endif' | LANG=C gcc -E -DRUBY_VERSION_CODE=185.1 - # 1 "<stdin>" # 1 "<built-in>" # 1 "<command line>" # 1 "<stdin>" <stdin>:1:5: floating constant in preprocessor expression NG -- Nobu Nakada