Recurring errors when writing C programs

This document collects recurring programming errors and stupidities found in a lot of code.

Unnecessary casts

Refrain from using casts whenever an implicit conversion without warnings is possible. This applies to conversion between any-pointer-type and void *, as well as all numeric values. (N.B.: When their types are known, i.e. a bit of care needs to be taken when using varargs functions like printf.) Why casting is really bad.