George Patterson wrote:
> lowlevel.cxx:84: error: invalid conversion from `uint64_t*'
>     to `long long unsigned int*'

I noticed this too.  The problem is that on 64 bit systems the glibc
headers have:

  typedef unsigned long int uint64_t;

Which is correct, because a long is a 64 bit type on x86_64.
Unfortunately (any C++ standards nutjobs on the list might want to
clarify), it seems to be illegal according to the spec to cast between
pointers to "long" and "long long", even on platforms where they are
of the same size.  The identical code compiles fine with no warnings
under ANSI C.

I suspect the real bug here is that glibc picks a type for uint64_t
that C++ thinks is different from the *other* (more portable) 64 bit
integer type.

But the fix for us is trivial: just change "unsigned long long" to
"uint64_t" and it works.

Andy


_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@flightgear.org
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d

Reply via email to