I know sometimes it can't be avoided, and that is probably your situation, but you shouldn't be using C for large projects if you can at all help it.
I know this is the kind of statement that leads to knee-jerk responses from fans, but for everybody else, including the language's own authors, it is an obvious fact. For instance, here's an excerpt from the history the the DoD's search for a language to support way back in the late 70's (the High Order Language Working Group):
Other languages were considered for formal evaluation, but were not included because preliminary examination led one to believe that they would not meet the requirements so were not viable candidates for the purposes of the DoD. One such language was C. At that time DARPA was working with Western Electric/Bell Labs on UNIX, contractually supporting some DARPA contractors and other government facilities using UNIX. It was the evaluation policy to have the owners provide assessments of their own languages, in addition to the contracted evaluations, so HOLWG took advantage of this connection between DARPA and Bell Labs to request their cooperation. When Bell Labs were invited to evaluate C against the DoD requirements, they said that there was no chance of C meeting the requirements of readability, safety, etc., for which we were striving, and that it should not even be on the list of evaluated languages. We recognized the truth in their observation and honored their request.