I mentioned the compiler version as i guess that Jules’s codes successfully pass bunch of hard tests before to be pushed (and such if something is going wrong it must be due to my platform) ;D Personally i use ULL and/or UL everywhere but it seems common to not doing so. Anyway it compiles fine now. Thanks again.
It was nothing to do with 32/64 bit architectures, it's just that the old compiler didn't recognise 64-bit literals without the suffix. All new compilers are fine, but unfortunately old MSVC ones had the opposite problem so adding ULL would break them, hence the tedious addition of a macro as a workaround.