Some of the solutions are not safe (and should be indicated as such). For example MIN/MAX in generic.h are macros so shouldn't be used with functions (and mustn't be used with functions that have side-effects). Macro parameters aren't bracketed either so operator precedence can bite there too.
There's also potential for undefined or implementation-defined behavior (e.g. multiply_by_7() is left shifting signed int). Author's heart is in the right place it's just that his skills aren't necessarily up to the task, I'm afraid.