Handle high 64 bit addresses for C++

Direct conversion via long results in 0xffffffff00000001 being output
as "0x-4294967295" which is not valid