A small part that was not mentioned here is from standard C.
6.7.7.3 [...] The typedef declaration does not introduce a new type, but only a synonym for the specified type.
You can use it to abstract some details, although when someone goes to extremes just for function calls, I wonder how they ever allocate memory, where size_t and the leak of knowledge that this is an unsigned int are necessary.
Given that this is only an alias, I have no problem using typedef for shortcuts, for example. to omit the optional keyword that is needed everywhere. I don't like the repeating pattern code, and its cover makes the code shorter. You just have to be a little careful not to affect clarity and readability, so I also prefer to keep namespaces clean and consistent. I think this is bad:
typedef struct state { float position; int dummy; } state;
and prefer something like this:
typedef struct s_state { float position; int dummy; } t_state;
source share