Upvoted for including .c files. It always amazes me how people go to the ends of the earth to avoid #include and macros in C/C++ code, when those are some of the most powerful tools in the language.
I got some of my best work done in C++ this way, long before I knew about "real" programming (functional programming) and abstraction. If someone wants safety, stick to C# or some other Java variant.