I often see source code using types like uint32, uint64 and I wonder if they should be defined by the programmer in the application code or if they are defined in a standard
Those integer types are all defined in stdint.h
The questioner actually asked about int16 (etc) rather than (ugly) int16_t (etc).
There are no standard headers - nor any in Linux's /usr/include/ folder that define them without the "_t".
The C99 stdint.h defines these:
int8_tint16_tint32_tuint8_tuint16_tuint32_tAnd, if the architecture supports them:
int64_tuint64_tThere are various other integer typedefs in stdint.h as well.
If you're stuck without a C99 environment then you should probably supply your own typedefs and use the C99 ones anyway.
The uint32 and uint64 (i.e. without the _t suffix) are probably application specific.
If you are using C99 just include stdint.h. BTW, the 64bit types are there iff the processor supports them.