title: Clean up your #include statements?
body: <p>How do you maintain the #include statements in your C or C++ project? It seems almost inevitable that eventually the set of include statements in a file is either insufficient (but happens to work because of the current state of the project) or includes stuff that is no longer needed.</p>
  
  <p>Have you created any tools to spot or rectify problems? Any suggestions?</p>
  
  <p>I've been thinking about writing something that compiles each non-header file individually many times, each time removing an #include statement. Continue doing this until a minimal set of includes is achieved.</p>
  
  <p>To verify that header files are including everything they need, I would create a source file that all it does is include a header file and try to compile it. If the compile fails, then the header file itself is missing an include.</p>
  
  <p>Before I create something though, I thought I should ask here. This seems like a somewhat universal problem.</p>