long is 32-bit integer on Windows (both 32-bit and 64-bit Windows). long is 32-bit integer on 32-bit Linux. long is 64-bit integer on 64-bit Linux. We should not use such types. ptrdiff_t could probably be used.