On 8/21/06 1:14 AM, "Ralf Wildenhues" <Ralf.Wildenhues_at_[hidden]> wrote:
>> Perhaps we should use int64_t instead.
> No, that would not help: int64_t is C99, so it should not be declared
> either in C89 mode. Also, the int64_t is required to have 64 bits, and
> could thus theoretically be smaller than 'long long' (no, I don't think
> any such systems exist today).
Hmmm...this raises an interesting point. We had originally decided that we
would strictly be C90 compliant (I looked it up in the original planning
meeting minutes). However, over the last two years, at some point we decided
that we were abandoning all the checks in the code for HAVE_INT64, and just
hardcoding int64_t into the code base. I remember the discussion and the
feeling that we would only be supporting systems that have int64_t support.
It sounds, therefore, like we are now C99 compliant and no longer C90
compliant at all?
I don't know how big a deal that is, but if true it is something possibly
worth noting on our web site and in our release notes. The code will
definitely NOT compile unless int64_t is defined and supported.
PS to Ralf: actually, quite a few systems exist today that do not support
long long or int64_t. The majority of computers in the world, in fact, do
not do so - they are in embedded systems. We decided that we were tasked
with supporting high-performance computing systems instead, and those are
now built almost exclusively from systems that DO support such structures.
Just a point of correctness... :-)