New issue: __int64 and friends

Martin von Loewis loewis at informatik.hu-berlin.de
Wed Mar 15 15:04:28 UTC 2000


> > Furthermore, C99 defines <stdint.h>, with int64_t mandatory, and other
> > types optional. I guess a C99 implementation should be advised to
> > provide int128_t, and it would be a good idea if the base ABI
> > specified the exact definitions of the _least_ and _fast_ types
> > (e.g. uint_least32_t, int_fast16_t) as well as intmax_t for the same
> > reason: structure layout relying on those types should be identical
> > across implementations.
> 
> These are all specified to be typedefs, with a header file defining
> them and the related types/limits.  I think it should be usable
> directly in a C++ program, and that we don't need to be concerned with
> (re)defining any of its content.

I agree this is not a C++ issue. I just was pointing out that the base
API needs to specify what those types are: the standard doesn't say
exactly, and it matters on the binary level.

> > From my (perhaps limited) viewpoint, __float128 would make a better
> > long double type. For one thing, the CORBA standard specifies that the
> > IDL type 'long double' is 128 bits on the wire. This is a pain to
> > implement on ia32.
> 
> This was decided long ago by the base ABI group.

I take 'this' here to mean that 'long double' in the base API is
__float80. I think that is a mistake long-term, but I don't think we
(C++) should debate it here - it is not a big mistake :-)

Regards,
Martin




More information about the cxx-abi-dev mailing list