Paul Eggert <eggert@cs.ucla.edu> wrote:
+#define SECSPER400YEARS (SECSPERNYEAR * (intmax_t) (300 + 3) \ + + SECSPERLYEAR * (intmax_t) (100 - 3))
i.e. 12 622 780 800
+ if (INTMAX_MAX / SECSPER400YEARS < diff400) + return absolute_max_time;
I think this is a constraint violation on 32 bit systems that don't have long long (e.g. C89), so it ought to cause a compilation error. C99 section 6.6 "constant expressions" paragraph 4 under "constraints" says: Each constant expression shall evaluate to a constant that is in the range of representable values for its type. C89 has the same requirement. I think (sadly) you'll have to use #ifdef on SECSPER400YEARS_FITS Tony. -- f.anthony.n.finch <dot@dotat.at> http://dotat.at/ Forties, Cromarty: East, veering southeast, 4 or 5, occasionally 6 at first. Rough, becoming slight or moderate. Showers, rain at first. Moderate or good, occasionally poor at first.