Boost logo

Boost Users :

From: John Maddock (john_at_[hidden])
Date: 2004-01-13 06:24:41

> I noticed that boost/cstdint.h does not define int64_t when GCC is in
> strict mode (-ansi or -std=c++98) on MinGW, Cygwin, and probably other
> major platforms. This seems to be because boost/cstdint.h refuses to
> define the type if ULLONG_MAX (or ULONG_LONG_MAX or ULONGLONG_MAX) is
> not defined, even if BOOST_HAS_LONG_LONG is defined. GCC, quite
> correctly, will not define these macros in strict mode.
> However, the library still probably should be defining this type.
> Ideally, there would be a GCC-specific work-around to prevent warnings
> on the use of long long in strict mode.
> In particular, I am using the date_time library which depends on
> int64_t. It would be very unfortunate and a little silly if I could not
> use date_time in GCC's strict mode.
> How would it be best to fix this?

This one is troublesome: boost/cstdint.hpp will just wrap stdint.h if that
is available, and I'm pretty sure that won't define int64_t either when in
strict mode.

On second thoughts testing shows that cygwin (and linux as well I think)
versions of stdint.h do define int64_t, but require the use of __extension__
to work correctly (without warnings or errors with -pedantic), I'm not sure
how to handle this one, thoughts anyone?


Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at