why all those explicit casts ? is ulong32 even defined somewhere else than on MSVC ? if the cast is necessary, which i doubt, than uint32_t from stdint.h would be the proper type to use, since it's defined in the C standard (introduced in C99).