finarfin wrote:My question is simply Why?
What are the pros and cons (if there are of using these typedef?) and not doing it is so bad practice, or is still ok?
It is a bad practice that arose from insufficiencies in early C standards. That is to say, C89 did not have these types. And some people have never grown out of the nineties. To include Microsoft; it took a while for them to include stdint.h.
In practice, you should just not define these types yourself. Just include <stdint.h> and use them. If they are not defined, then that means your particular implementation has no integer type of the requested width. You may get somewhere with the minimum-width types (uint_least32_t etc.)
Defining the types yourself is hard if you don't know what you're doing. You can easily get it wrong. For example, the snippet you quoted happens to work out for CC on Linux on AMD64, but fails for GCC on Linux on i386 as well as GCC on Windows on AMD64. So it is extremely brittle, even minor changes break everything. Whereas if you just use <stdint.h> you always get what you wanted.
finarfin wrote: I suppose that means that everything is configured correctly, right?
Looks about right.