Please wrap each #define in an #ifndef guard. Otherwise LGTM, I think. @piscisaureus?