If you want to use Qt, you have to embrace quint8
, quint16
and so forth.
If you want to use GLib, you have to welcome guint8
, guint16
and so forth.
On Linux there are u32
, s16
and so forth.
uC/OS defines SINT32
, UINT16
and so forth.
And if you have to use some combination of those things, you better be prepared for trouble. Because on your machine u32
will be typedef
d over long
and quint32
will be typedef
d over int
and the compiler will complain.
Why does everybody do this, if there is <stdint.h>
? Is this some kind of tradition for libraries?
stdint.h
?", but rather, would be, why would anyone e.g. useUINT16
orquint16
instead of just plainunsigned short
in the first place? On which compiler exactly would doing so fail them? – Hallettshort
, notint
. Do you know of any platform whereshort
wouldn't work buts8
ands16
both would? I know that's quite possible in theory, but I'm pretty sure most of the libraries in which I see typedefs like this would never actually be targeting such platforms. – Hallettstdint.h
was invented. – Accumbentint16
? The only thing that does is hard-code the (in all likelihood, somewhat arbitrary) number "16" into your code... why? – Hallettshort
,int
etc. can have - why think about that if I have the right data types already at hand? And as soon as you get toint
orlong
, you have to think even harder. – Accumbentsizeof(int) * CHAR_BIT
(for example) and use that? If yourint
is too small to represent your range (e.g. an array index), then you almost certainly shouldn't be usingint
anyway, but something likesize_t
. Why wouldint32
make any more sense? The only time fixed width makes sense is for communication between systems (e.g. file/network format)... – Hallettuint16_t
(or maybe itsfast
orleast
variant). My point being: These types are convenient to use and have their reason of existence. – Accumbentsize_t
and/oruint64_t
. – Hydrometeor