gcc 4.7.2
c89
Hello,
I am using the Apache Portable Runtime and looking at their typedef’s
typedef short apr_int16_t
typedef int apr_int16_t
typedef size_t apr_size_t /* This is basically the same, so what's the point */
etc.
- So what is the point of all this?
- When should you decided to use C’s built-in standard data types or typedef’s data types?
I just gave a example using the APR. However, I am also speaking generally as well. There is also the stdint.h header file that typedef’s data types.
Many thanks for any suggestions,
Great question.
So what is the point of all this?
It’s meant to be for abstraction, but like anything else, it is sometimes misused/overused.
Sometimes it’s necessary for backwards compatibility (e.g.
typedef VOID voidin Windows), sometimes it’s necessary for proper abstraction (e.g.typedef unsigned int size_t), and sometimes it’s completely pointless logically, but makes typing easier (e.g.typedef char const *LPCSTRin Windows).When should you decided to use C’s built-in standard data types or typedef’s data types?
If it makes something easier, or if it implements a proper abstraction barrier, use it.
What exactly that means is something you’ll just have to learn over time.
But don’t use it “just for kicks”!