It seems that g++/C++ is completely broken with respect to portable 64-bit numbers and scanf/printf.
uint64_t is long long int on 32-bit machines and long int on 64-bit machines and scanf/printf require the corresponding %lld %ld which is painfully difficult. Until they fix it, either we use the pain in the ass PRIu64 macro "x = " PRIu64 " things" which screws up computed print strings and user configurable strings or we suck it up and continue to use tsu64 for 64bit numbers or switch to int64 uint64. I don't think tsu64 is readable. At least inku64 scanned as intu64. tsu64 scans as some aol username. My suggestion is to go with int64, uint64. It is readable, generic, doesn't conflict with standard libs and lets us use: long long int which is portable for uint64 int which is portable for int32 short which is portable for int16 Why the hell uint64_t is defined this way and g++ complains even though long int == long long it is beyond me. Suggestions, comments? john