Use clang with -Weverything \o/; Separate linker instructions to a separate variable
Use object intermediates in build; separate all source files into headers and implementations
Use object intermediates in build
Make all the state variables static (still subject to significant change)