Here is your default_define macro:
Obviously it requires a second pass for gcc, and its function is absolutely useless except for lisp weenies refusing to use
#ifndef #endif as intended.
https://github.com/FrozenVoid/C-techniques/blob/master/default_define.c