First, you confuse C99's <stdint.h> and <inttypes.h> headers, although
I admit the names are not terribly intuitive.
It is <stdint.h> that provides for various integer types.
<inttypes.h> provides macros for performing formatted character and
wide character input/output operations on the types.
I find your list of "Integer Data Types" likely to be very confusing
for someone not already familiar with the types. You list "short int"
and "long int" on the same line with int, when they are different
types. Then your list of synonyms is incomplete.
Finally, your recommendation is seriously flawed as far as I'm
concerned. The whole point of <stdint.h> is to allow writing code
that is portable to different implementations with different widths
for the integer types. Note that it is possible to write one's own
<stdint.h> for any conforming C++ compiler, with the possible omission
of the 64 bit types.
This is of more than academic concern to some of us, especially those
who work in multiple and less-common environments, such as digital
signal processors and embedded systems of various types.
About a year ago I wrote code to deal with data from a CAN bus
interface. The hardware level driver code is of course off-topic
here, but the code that packs data into packets to transmit, and
unpacks data from received packets to parse, was 100% standard.
The CAN packet in memory consisted of 128 bits in contiguous bytes.
The data in the middle 64 bits represented data that could be any
combination of 8-bit, 16-bit, and 32-bit values.
The processors on each end of the link had very different hardware
restrictions and integer types.
The master was an ARM microcontroller that requires alignment of
16-bit data to even addresses and 32-bit data to addresses evenly
divisible by four. The slave was a DSP with 16-bit bytes that can't
address 8-bit values in memory at all, and required 32-bit data to be
aligned to even addresses.
The ARM compiler came with a <stdint.h> header, the DSP compiler did
not so I wrote my own. Then I wrote packetizing, depacketizing, and
parsing routines using that <stdint.h> that compiled and executed
unchanged on both sides.
You might want to take a look at my page:
http://www.jk-technology.com/c/inttypes.html