size_t is a typedef that results in the largest unsigned type the system has, so it makes sense to use it.
On my 64 bit Linux system, I get pedantic warnings about long long: long is already 64 bit.
I guess these issues are a symptom of the way C/C++ has evolved.